⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 themearchiver.c

📁 MTK手机平台的MMI部分的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
{
    /*----------------------------------------------------------------*/
    /* 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 + -