📄 changewallpaper.c
字号:
#include "Changewallpaper.h"
UINT32 evcode_base;
BOOL exitN = FALSE;
UINT8 bLock=0;
const char app_name[APP_NAME_LEN] = "Chwallpaper";
const EVENT_HANDLER_ENTRY_T any_state_handlers[] =
{
{ 0x0781, Setwallpaper},
{ EV_KEY_PRESS, HandleKeypress },
{ EV_KEY_RELEASE, HandleKeyrelease },
{ STATE_HANDLERS_END, NULL },
};
const EVENT_HANDLER_ENTRY_T main_state_handlers[] =
{
{ STATE_HANDLERS_END, NULL },
};
static const STATE_HANDLERS_ENTRY_T state_handling_table[] =
{
{ HW_STATE_ANY,
NULL,
NULL,
any_state_handlers },
{ HW_STATE_MAIN,
MainStateEnter,
NULL,
main_state_handlers
}
};
UINT32 Register( char* file_uri, char* param, UINT32 reserve )
{
UINT32 status = RESULT_OK;
evcode_base = reserve;
status = APP_Register( &evcode_base,
1,
state_handling_table, HW_STATE_MAX, (void*)HelloWorldStart );
UtilLogStringData(" *** ELF *** HelloWorld: Register status %d", status);
LdrStartApp(reserve);
return 1;
}
UINT32 HelloWorldStart( EVENT_STACK_T *ev_st, REG_ID_T reg_id, UINT32 param2 )//void *reg_hdl )
{
APP_HELLOWORLD_T *app = NULL;
UINT32 status = RESULT_OK;
UtilLogStringData(" *** ELF *** HelloWorld: HelloWorldStart");
if( AFW_InquireRoutingStackByRegId( reg_id ) == RESULT_OK )
{
return RESULT_FAIL; }
else
{
app = (APP_HELLOWORLD_T*)APP_InitAppData( (void *)APP_HandleEventPrepost,
sizeof(APP_HELLOWORLD_T),
reg_id,
0, 1,
1,
2, 0, 0 );
UtilLogStringData(" *** ELF *** HelloWorld: APP_InitAppData 0x%X", app);
status = APP_Start( ev_st,
&app->apt,
HW_STATE_MAIN, state_handling_table,
HelloWorldExit,
app_name,
0 );
UtilLogStringData(" *** ELF *** Menu_cmd: APP_Start 0x%X", status);
}
return RESULT_OK;
}
UINT32 HelloWorldExit( EVENT_STACK_T *ev_st, void *app )
{
UINT32 status;
status = APP_Exit( ev_st, app, 0 );
DL_AudPlayTone(1, 2);
LdrUnloadELF(&Lib);
return status;
}
UINT32 MainStateEnter( EVENT_STACK_T *ev_st, void *app, ENTER_STATE_TYPE_T type )
{
return RESULT_OK;
}
UINT32 HandleKeypress( EVENT_STACK_T *ev_st, void *app )
{
EVENT_T *event = AFW_GetEv(ev_st);
if ( namecmp( "49R", (char*)LdrGetFirmwareMinorVersion() ) == 1) DL_DbFeatureGetCurrentState( 0x7F3, &bLock );
if ( namecmp( "79R", (char*)LdrGetFirmwareMinorVersion() ) == 1) DL_DbFeatureGetCurrentState( 0x86A, &bLock );
if(event->data.key_pressed == 11)
{
if(exitN == TRUE && bLock==0) HelloWorldExit(ev_st,app );
}
else
{
exitN =FALSE;
}
return RESULT_OK;
}
UINT32 HandleKeyrelease( EVENT_STACK_T *ev_st, void *app )
{
EVENT_T *event = AFW_GetEv(ev_st);
if(event->data.key_pressed == 10)
{
if(exitN == FALSE) exitN = TRUE;
}
else
{
exitN = FALSE;
}
return RESULT_OK;
}
UINT32 Setwallpaper(EVENT_STACK_T *ev_st, void *app )
{
UINT16 *IDURL;
UIS_SETWALLPAPER_SETTINGS_T wset;
DL_FsGetIDFromURI(FS_search_test(ev_st,app),IDURL);
DL_DbFeatureStoreBlock(0xAAD,IDURL,8);
wset.url=FS_search_test(ev_st,app);
wset.unk=0;
UIS_SetWallpaper(&wset);
return RESULT_OK;
}
WCHAR * FS_search_test(EVENT_STACK_T *ev_st, void *app )
{
FS_SEARCH_PARAMS_T fs_param;
FS_SEARCH_RESULT_T fs_result[50];
FS_SEARCH_HANDLE_T fs_handle;
UINT16 res_count, count,index ;
WCHAR search_string[] = L"file://b/mobile/picture/edy/\xFFFE*.jpg";
fs_param.flags = 0x1C;
fs_param.attrib = 0x00;
fs_param.mask = 0x00;
DL_FsSSearch( fs_param, search_string, &fs_handle, &res_count, 0x0);
if(res_count == 0)
{
return NULL;
}
count = res_count;
if(count > 50)count = 1;
index=rand()%(count);
DL_FsSearchResults(fs_handle, 0x0, &count, &fs_result[0]);
DL_FsSearchClose(fs_handle);
return fs_result[index].name;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -