📄 themearchiver.c
字号:
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U8 *guiBuffer_p;
U16 nStrItemList[MAX_SUB_MENUS];
U16 nNumofItem;
U16 nDispAttribute;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
EntryNewScreen(SCR_ID_DOWNLOAD_THM_STORAGE, NULL, mmi_ta_entry_select_storage_screen, NULL);
guiBuffer_p = GetCurrGuiBuffer(SCR_ID_DOWNLOAD_THM_STORAGE);
nNumofItem = GetNumOfChild(MENU_DOWNLOAD_THEMES_STORAGE);
nDispAttribute = GetDispAttributeOfItem(MENU_DOWNLOAD_THEMES_STORAGE);
GetSequenceStringIds(MENU_DOWNLOAD_THEMES_STORAGE, nStrItemList);
SetParentHandler(MENU_DOWNLOAD_THEMES_STORAGE);
RegisterHighlightHandler(mmi_ta_select_dlt_storage_type);
ShowCategory11Screen(
STR_SELECT_STORAGE_TITLE_ID,
IMG_SELECT_STORAGE_TITLE_ID,
STR_GLOBAL_OK,
0,
STR_GLOBAL_BACK,
0,
nNumofItem,
nStrItemList,
0,
guiBuffer_p);
SetLeftSoftkeyFunction(mmi_ta_set_dlt_storage_type, KEY_EVENT_UP);
SetRightSoftkeyFunction(mmi_ta_exit_dlt_storage_type, KEY_EVENT_UP);
SetKeyHandler(DisplayIdleScreen, KEY_END, KEY_EVENT_DOWN);
}
/*****************************************************************************
* FUNCTION
* mmi_ta_exit_dlt_storage_type
* DESCRIPTION
* CallBack function for highlight movement on Select Storage screen.
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_ta_exit_dlt_storage_type(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
mmi_ta_delete_intermediate_dlt_files((U16*) g_ta_da_context.file_name_with_path);
GoBackHistory();
}
/*****************************************************************************
* FUNCTION
* mmi_ta_select_dlt_storage_type
* DESCRIPTION
* CallBack function for highlight movement on Select Storage screen.
* PARAMETERS
* index [IN]
* RETURNS
* void
*****************************************************************************/
void mmi_ta_select_dlt_storage_type(S32 index)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
g_ta_da_context.current_hilite_storage_type = index;
}
/*****************************************************************************
* FUNCTION
* mmi_ta_set_dlt_storage_type
* DESCRIPTION
* Validate the selected storage type and set storage location for
* theme download content.
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_ta_set_dlt_storage_type(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
S32 fs_RetDrv = 0;
U64 disk_free_space;
U64 file_size;
FS_DiskInfo disk_info;
FS_HANDLE file_handle;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
switch (g_ta_da_context.current_hilite_storage_type)
{
case 0:
fs_RetDrv = FS_GetDrive(FS_DRIVE_V_NORMAL, 2, FS_DRIVE_V_NORMAL | FS_DRIVE_I_SYSTEM);
g_ta_da_context.curr_storage_type = THEME_TYPE_DOWNLOADED_PHONE;
break;
case 1:
fs_RetDrv = FS_GetDrive(FS_DRIVE_V_REMOVABLE, 1, FS_NO_ALT_DRIVE);
g_ta_da_context.curr_storage_type = THEME_TYPE_DOWNLOADED_CARD;
break;
default:
break;
}
if (fs_RetDrv >= 0)
{
S8 buf[6];
S32 create_result;
sprintf(buf, "%c:\\", (U8) fs_RetDrv);
memset(subMenuData, 0, (FMGR_MAX_PATH_LEN + FMGR_MAX_FILE_LEN) * ENCODING_LENGTH);
AnsiiToUnicodeString((S8*) subMenuData, (S8*) buf);
file_handle = FS_Open((kal_uint16*) subMenuData, FS_OPEN_DIR | FS_READ_ONLY);
if (file_handle >= 0)
{
FS_Close(file_handle);
/* drive is avaiable */
FS_GetDiskInfo((PU16) subMenuData, &disk_info, FS_DI_BASIC_INFO | FS_DI_FREE_SPACE);
disk_free_space = disk_info.FreeClusters * disk_info.SectorsPerCluster * disk_info.BytesPerSector;
file_size = (U64) (g_ta_da_context.da_file_size * 1024);
if (disk_free_space >= file_size)
{
pfnUnicodeStrcat((PS8) subMenuData, (PS8) FMGR_DEFAULT_FOLDER_THEMES);
file_handle = FS_Open((kal_uint16*) subMenuData, FS_OPEN_DIR | FS_READ_ONLY);
/* path already exist */
if (file_handle >= 0)
{
FS_Close(file_handle);
create_result = 0;
}
else
{
create_result = FS_CreateDir((PU16) subMenuData);
}
if (create_result == FS_WRITE_PROTECTION)
{
DisplayPopup(
(PU8) GetString(STR_ID_DLT_WRITE_PROTECTED),
IMG_GLOBAL_WARNING,
0,
UI_POPUP_NOTIFYDURATION_TIME,
WARNING_TONE);
}
else if (create_result == FS_DISK_FULL)
{
DisplayPopup(
(PU8) GetString(STR_ID_DLT_DISK_FULL),
IMG_GLOBAL_WARNING,
0,
UI_POPUP_NOTIFYDURATION_TIME,
WARNING_TONE);
}
else
{
mmi_ta_save_theme_content((PS8) subMenuData);
}
}
else
{
DisplayPopup(
(PU8) GetString(STR_ID_DLT_UNSUFFICIENT_MEMORY),
IMG_GLOBAL_WARNING,
1,
UI_POPUP_NOTIFYDURATION_TIME,
WARNING_TONE);
}
}
else
{
DisplayPopup(
(PU8) GetString(STR_ID_DLT_NO_MEMORY_CARD),
IMG_GLOBAL_WARNING,
1,
UI_POPUP_NOTIFYDURATION_TIME,
WARNING_TONE);
}
}
else
{
/* get drive error */
DisplayPopup(
(PU8) GetString(STR_ID_DLT_NO_MEMORY_CARD),
IMG_GLOBAL_WARNING,
1,
UI_POPUP_NOTIFYDURATION_TIME,
WARNING_TONE);
}
}
/*****************************************************************************
* FUNCTION
* mmi_ta_save_theme_content
* DESCRIPTION
* Saves the Theme Content in the right folder
* PARAMETERS
* filepath_p [IN]
* RETURNS
* void
*****************************************************************************/
void mmi_ta_save_theme_content(S8 *filepath_p)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
S8 *temp_file_name_p;
S8 temp_file_name[(FMGR_MAX_FILE_LEN + 1) * ENCODING_LENGTH];
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
temp_file_name_p = mmi_ta_parse_url_extract_file_name((S8*) g_ta_da_context.file_name_with_path);
pfnUnicodeStrncpy(temp_file_name, temp_file_name_p, (FMGR_MAX_FILE_LEN + 1) * ENCODING_LENGTH);
mmi_ta_check_if_file_alrdy_exist_in_fm((S8*) filepath_p, (S8*) temp_file_name);
pfnUnicodeStrcat((S8*) subMenuData, (S8*) temp_file_name);
FS_Move(
(const WCHAR*)g_ta_da_context.file_name_with_path,
(const WCHAR*)subMenuData,
FS_MOVE_KILL | FS_MOVE_OVERWRITE,
NULL, NULL, 0);
pfnUnicodeStrcpy((S8*) g_ta_da_context.file_name_with_path, (S8*) subMenuData);
mmi_ta_theme_download_complete_notification();
}
/*****************************************************************************
* FUNCTION
* mmi_ta_theme_download_complete_notification
* DESCRIPTION
* show download complete notification..
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_ta_theme_download_complete_notification(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
DisplayConfirm(
STR_GLOBAL_YES,
IMG_GLOBAL_YES,
STR_GLOBAL_NO,
IMG_GLOBAL_NO,
get_string(STR_ID_THEME_DOWNLOAD_COMPLETE),
IMG_GLOBAL_QUESTION,
WARNING_TONE);
DeleteScreenIfPresent(SCR_ID_DOWNLOAD_THM_STORAGE);
SetLeftSoftkeyFunction(mmi_ta_set_dlt_as_activated, KEY_EVENT_UP);
SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
}
/*****************************************************************************
* FUNCTION
* mmi_ta_set_dlt_as_activated
* DESCRIPTION
* Apply downloaded theme as currrent theme.
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_ta_set_dlt_as_activated(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
int status;
S8 *temp_file_name_p;
S8 temp_file_name[(FMGR_MAX_FILE_LEN + 1) * ENCODING_LENGTH];
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* This fn call will create history for the previous screen
and the current screen will not be created in history */
EntryNewScreen(0, NULL, NULL, NULL);
ShowCategory66Screen(
STR_SCR3001_THEMES_CAPTION,
0,
0,
0,
0,
0,
(PU8) GetString(STR_ID_DLT_THM_PROGRESS),
IMG_THEME_ACTIVATION,
NULL);
DeleteScreenIfPresent(SCR_ID_DOWNLOAD_THM_STORAGE);
temp_file_name_p = mmi_ta_parse_url_extract_file_name((S8*) g_ta_da_context.file_name_with_path);
pfnUnicodeStrncpy(temp_file_name, temp_file_name_p, (FMGR_MAX_FILE_LEN + 1) * ENCODING_LENGTH);
status = mmi_tm_activate_theme_from_fmgr(g_ta_da_context.curr_storage_type, (PU8) temp_file_name);
mmi_tm_handle_theme_activation_error_status((U16) status); /* removed warning: by shariq */
}
/*****************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -