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

📄 jmmsstorehandling.c

📁 MTK_MMI的部分源代码,从code中大致了解到MMI的执行流程
💻 C
📖 第 1 页 / 共 4 页
字号:
    if (eRet == JC_OK)
    {
        if (isJavaMsg == E_TRUE)
        {
            g_jmms_java_msgid = msgId;
            mmi_jmms_set_java_msgid_value_to_nvram();
            mmi_jsr_add_recv_java_mms_content(msgId, content_type);
        }
    }

    if (content_type != NULL)
    {
        jdd_MemFree(content_type);
        content_type = NULL;
    }

    return eRet;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_store_update_message_extrabyte
 * DESCRIPTION
 *  
 * PARAMETERS
 *  pFolderName         [?]         [?]
 *  uiMsgIndex          [IN]        [?]
 *  uiExtraBytes        [IN]        
 *  extraBytes(?)       [IN]        
 * RETURNS
 *  
 *****************************************************************************/
JC_RETCODE mmi_jmms_store_update_message_extrabyte(S8 *pFolderName, JC_UINT32 uiMsgIndex, JC_UINT32 uiExtraBytes)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    MESSAGE_LIST *pMessageList = NULL;
    JC_RETCODE eRet = JC_OK;
    RETRIEVE_FILTERS StoreRetFilter = {0, };

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    eRet = mmi_jmms_set_active_folder(pFolderName);
    if (JC_OK != eRet)
    {
        return eRet;
    }

    StoreRetFilter.uiStartIndex = uiMsgIndex;
    StoreRetFilter.uiNumMessage = 1;
    StoreRetFilter.eRetrieve = E_RETRIEVE_BY_INDEX;
    eRet = mmi_jmms_jdi_get_msg_list(g_jmms_context->hStoreHandle, &pMessageList, &StoreRetFilter);
    if (JC_OK != eRet)
    {
        if (JC_ERR_STORE_FILE_CORRUPTED == eRet)
        {
            eRet = mmi_jmms_restore_folder_info();
            if (eRet == JC_OK)
            {
                eRet = mmi_jmms_jdi_get_msg_list(g_jmms_context->hStoreHandle, &pMessageList, &StoreRetFilter);
            }
            else
            {
                return eRet;
            }

        }
        else
        {
            return eRet;
        }
    }

    if (eRet != JC_OK)
    {
        return eRet;
    }
    eRet = mmi_jmms_jdi_update_extrabytes(g_jmms_context->hStoreHandle, uiMsgIndex, uiExtraBytes);
    return eRet;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_delete_all_message
 * DESCRIPTION
 *  
 * PARAMETERS
 *  pFolderName     [?]     [?]
 * RETURNS
 *  
 *****************************************************************************/
JC_RETCODE mmi_jmms_delete_all_message(S8 *pFolderName)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JC_RETCODE eRet = JC_OK;
    U8 number_mms = 0;

    // TODO::manish changing here.Ned to test
    MESSAGE_LIST *pMessageList = NULL;
    RETRIEVE_FILTERS StoreRetFilter = {0, };

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/	
    eRet = mmi_jmms_set_active_folder(pFolderName);
    PRINT_INFORMATION_2((MMI_TRACE_INFO, "mmi_jmms_delete_all_message: %s", pFolderName));
    if (JC_OK != eRet)
    {
        return eRet;

    }

    StoreRetFilter.uiStartIndex = 1;
    StoreRetFilter.uiNumMessage = 0;
    StoreRetFilter.eRetrieve = E_RETRIEVE_BY_INDEX;
    eRet = mmi_jmms_jdi_get_msg_list(g_jmms_context->hStoreHandle, &pMessageList, &StoreRetFilter);

    if (JC_OK != eRet)
    {
        if (JC_ERR_STORE_FILE_CORRUPTED == eRet)
        {
            eRet = mmi_jmms_restore_folder_info();
            if (eRet == JC_OK)
            {
                eRet = mmi_jmms_jdi_get_msg_list(g_jmms_context->hStoreHandle, &pMessageList, &StoreRetFilter);
            }
        }
        if (eRet != JC_OK)
        {
            return eRet;
        }
    }

    eRet = mmi_jmms_store_jdi_delete_all_msg(g_jmms_context->hStoreHandle);
    if (JC_OK != eRet)
    {
        return eRet;
    }

    eRet = mmi_jmms_jdi_update_msg_list(g_jmms_context->hStoreHandle, E_FALSE);
    if (JC_OK != eRet)
    {
        if (JC_ERR_STORE_FILE_CORRUPTED == eRet)
        {
            eRet = mmi_jmms_restore_folder_info();
            if (eRet != JC_OK)
            {
                return eRet;
            }
        }
    }

    if (eRet == JC_OK)
    {
        eRet = mmi_jmms_get_total_number_of_messages(&number_mms);
        if (eRet != JC_OK)
        {
            return eRet;
        }

        if (number_mms < MAX_POSSIBLE_MESSAGES)
        {
            mmi_jmms_remove_memory_full_node_if_present();
        }
        /* PMT VIKAS START 20060405 */
        mmi_jmms_update_status_icon_indicator();
        /* PMT VIKAS END 20060405 */
    }

    return eRet;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_get_message_id
 * DESCRIPTION
 *  
 * PARAMETERS
 *  pFolderName     [?]         [?]
 *  uiMsgIndex      [IN]        
 * RETURNS
 *  
 *****************************************************************************/
JC_UINT32 mmi_jmms_get_message_id(S8 *pFolderName, JC_UINT32 uiMsgIndex)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JC_RETCODE eRet = JC_OK;
    JC_UINT32 msgId = 0;
    MESSAGE_LIST *pMessageList = NULL;
    RETRIEVE_FILTERS StoreRetFilter = {0, };

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    eRet = mmi_jmms_set_active_folder(pFolderName);

    if (JC_OK != eRet)
    {
        return 0;
    }

    StoreRetFilter.uiStartIndex = uiMsgIndex;
    StoreRetFilter.uiNumMessage = 1;
    StoreRetFilter.eRetrieve = E_RETRIEVE_BY_INDEX;
    eRet = mmi_jmms_jdi_get_msg_list(g_jmms_context->hStoreHandle, &pMessageList, &StoreRetFilter);
    if (JC_OK != eRet)
    {
        if (JC_ERR_STORE_FILE_CORRUPTED == eRet)
        {
            eRet = mmi_jmms_restore_folder_info();
            if (eRet == JC_OK)
            {
                eRet = mmi_jmms_jdi_get_msg_list(g_jmms_context->hStoreHandle, &pMessageList, &StoreRetFilter);
            }
        }
        if (eRet != JC_OK)
        {
            return 0;
        }
    }
#ifdef __MMI_UNIFIED_MESSAGE__
    msgId = pMessageList->uiExtraBytes & 0x00FFFFFF;
#else 
    msgId = pMessageList->uiExtraBytes;
#endif 
    return msgId;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_free_messages_list
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_jmms_free_messages_list(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    STORAGE_CTX *pStorageHandle = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    pStorageHandle = (STORAGE_CTX*) (g_jmms_context->hStoreHandle);

    if (pStorageHandle->pMessageList != NULL)
    {
        StoreFreeMessageList(pStorageHandle->pMessageList);
        pStorageHandle->pMessageList = NULL;
    }
}

/* PMT VIKAS START 20060401 */


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_get_number_of_unread_messages_in_inbox
 * DESCRIPTION
 *  
 * PARAMETERS
 *  total_num_unread_messages       [?]     [?]
 * RETURNS
 *  
 *****************************************************************************/
JC_RETCODE mmi_jmms_get_number_of_unread_messages_in_inbox(U8 *total_num_unread_messages)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JC_RETCODE eRet = JC_OK;
    U8 msgs = 0;
    U8 i = 0;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    *total_num_unread_messages = 0;
    eRet = mmi_mms_get_number_of_messages(MMI_JMMS_INBOX, &msgs);
    if (eRet != JC_OK)
    {
        PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s%d", "mmi_jmms_get_number_of_unread_messages_in_inbox returns = ",eRet));
        return eRet;
    }

    for (i = 0; i < msgs; i++)
    {
        U8 msg_index = 0;

        msg_index = msgs - i;
        msg_index = msg_index - 1;
        if (mmi_jmms_is_msg_read(msg_index) == MMI_FALSE)
        {
            *total_num_unread_messages = *total_num_unread_messages + 1;
        }
    }
    PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s%d", "unread_messages_in_inbox = ",*total_num_unread_messages));
    return eRet;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_set_active_folder
 * DESCRIPTION
 *  
 * PARAMETERS
 *  pFolderName     [?]     [?]
 * RETURNS
 *  
 *****************************************************************************/
JC_RETCODE mmi_jmms_set_active_folder(S8 *pFolderName)
{

    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U32 len = 0;
    JC_CHAR *folder_name = NULL;
    JC_RETCODE eRet = JC_OK;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    len = strlen((PS8) pFolderName);
    folder_name = (JC_CHAR*) jdd_MemAlloc(sizeof(JC_CHAR), len + 1);

    if (NULL == folder_name)
    {
        return JC_ERR_MEMORY_ALLOCATION;
    }

    AnsiiToUnicodeString((PS8) folder_name, (PS8) pFolderName);
    eRet = mmi_jmms_jdi_set_active_folder(g_jmms_context->hStoreHandle, (JC_CHAR*) folder_name);
    jdd_MemFree(folder_name);

    return eRet;
}

/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_delete_progresing_screen
 * DESCRIPTION
 *  
 * PARAMETERS
 *  pFolderName     [?]     [?]
 * RETURNS
 *  
 *****************************************************************************/
void mmi_jmms_delete_progresing_screen(U16 title_str_id, U16 image_id)
{

    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    EntryNewScreen(SCR_ID_JMMS_DELETING_PROGRESS, NULL, NULL, NULL);

    ShowCategory8Screen(
        title_str_id,
        GetRootTitleIcon(MAIN_MENU_MESSAGES_MENUID),
        0,
        0,
        0,
        0,
        STR_ID_JMMS_DELETING_MMS,
        image_id,
        NULL);

}

/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_recreate_sys_folders
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void     [?]     [?]
 * RETURNS
 *  JC_RETCODE
 *****************************************************************************/
JC_RETCODE mmi_jmms_recreate_sys_folders(void)
{
	JDD_FSHANDLE	fs_handle = NULL;
    JC_INT32 drive_letter = FS_GetDrive(FS_DRIVE_I_SYSTEM, 1, FS_NO_ALT_DRIVE);
    JC_INT8 mms_folder_path_ascii[30];
    JC_CHAR mms_folder_path_ucs2[30 * ENCODING_LENGTH];
    JC_CHAR *mms_sys_filepath_ucs2 = NULL;
    JC_RETCODE eRet = JC_OK;
    #ifdef MMS_IN_LARGE_STORAGE
    /* Order: 1. Invisible NAND 2. Visible NAND 3. visible NOR 4. Invisible NOR */
    drive_letter = FS_GetDrive(FS_DRIVE_I_SYSTEM, 2, FS_DRIVE_V_NORMAL | FS_DRIVE_I_SYSTEM);
    #endif /* MMS_IN_LARGE_STORAGE */ 
    PRINT_INFORMATION_2((MMI_TRACE_INFO, "Enters mmi_jmms_recreate_sys_folders"));
    if (fs_handle == NULL)
    {
        if (jdd_FSInitialize(&fs_handle) != JC_OK)
        {
            return -1;
        }
    }
    jdi_UtilsCharToTchar(&mms_sys_filepath_ucs2, JDD_FS_MMS_SYS_FOLDER);
    if (jdd_FSIsDirExist(fs_handle, mms_sys_filepath_ucs2) == E_TRUE)
    {
        eRet=jdd_FSDelDir(fs_handle,  mms_sys_filepath_ucs2);
        PRINT_INFORMATION_2((MMI_TRACE_INFO, "mmi_jmms_delete_sys_folders: %d",eRet));
        eRet=jdd_FSMakeDir(fs_handle, mms_sys_filepath_ucs2);
        PRINT_INFORMATION_2((MMI_TRACE_INFO, "mmi_jmms_create_sys_folders: %d",eRet));
    }
error:
    jdd_MemFree(mms_sys_filepath_ucs2);
    if (fs_handle != NULL)
    {
        jdd_FSDeinitialize(fs_handle);
        fs_handle = NULL;
    }
    return eRet;
}


/* PMT VIKAS END 20060401 */
#endif /* (defined (JATAAYU_SUPPORT) && defined(MMS_SUPPORT)) */ 

#endif /* _MMI_JMMSSTOREHANDLING_C */ /* _MMI_STOREHANDLING_C */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -