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

📄 jmmsstorehandling.c

📁 MTK_MMI的部分源代码,从code中大致了解到MMI的执行流程
💻 C
📖 第 1 页 / 共 4 页
字号:
        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_jdi_delete_msg(g_jmms_context->hStoreHandle, uiMsgIndex);
    if (JC_OK != eRet)
    {
        return eRet;
    }

#ifdef __MMI_UNIFIED_MESSAGE__
    if (g_jmms_context->msg_handle != NULL)
    {
        eRet = mmi_jmms_jdi_msg_deinit(g_jmms_context->msg_handle);
        if (JC_OK != eRet)
        {
            return eRet;
        }
        g_jmms_context->msg_handle = NULL;
    }
#endif /* __MMI_UNIFIED_MESSAGE__ */ 

    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)
    {
        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 */
    g_jmms_context->is_unread_msg_deleted = 0;

    if (strcmp(pFolderName, MMI_JMMS_INBOX) == 0)
    {
        if (g_jmms_context->is_unread_msg_deleted == 1)
        {
            mmi_jmms_handle_read_report(g_jmms_context->MsgHeader_type_p);
        }
    }

    return eRet;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_save_message_buffer_in_Store
 * DESCRIPTION
 *  
 * PARAMETERS
 *  pFolderName     [?]         [?]
 *  uiMsgIndex      [?]         [?]
 *  MsgHeaders      [?]         [?]
 *  Content         [?]         [?]
 *  extraBytes      [IN]        
 * RETURNS
 *  
 *****************************************************************************/
JC_RETCODE mmi_jmms_save_message_buffer_in_Store(
            S8 *pFolderName,
            JC_UINT32 *uiMsgIndex,
            MESSAGE_HEADERS *MsgHeaders,
            CONTENT_DATA *Content,
            JC_UINT32 *extraBytes)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U32 len = 0;
    S8 *folder_name = NULL;
    JC_RETCODE eRet = JC_OK;
    U32 msgId = 0;
    U8 number_mms = 0;

    //      MMI_BOOL isJavaMsg = MMI_FALSE;
    //   JC_INT8 *content_type = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    /* /check whether Total msgs count have been reached to max limit */
    eRet = mmi_jmms_get_total_number_of_messages(&number_mms);
    if (eRet != JC_OK)
    {
        return eRet;
    }

    if (number_mms >= MAX_POSSIBLE_MESSAGES)
    {
        mmi_jmms_add_memory_full_node_if_not_already();
        return E_MEMORY_FULL_ERROR;
    }

    len = (strlen((PS8) pFolderName) + 1) * ENCODING_LENGTH;
    folder_name = (PS8) jdd_MemAlloc(sizeof(S8), len);

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

    AnsiiToUnicodeString((PS8) folder_name, (PS8) pFolderName);

    eRet = mmi_jmms_set_active_folder(pFolderName);
    if (JC_OK != eRet)
    {
        jdd_MemFree(folder_name);
        return eRet;
    }

    mmi_jmms_get_normal_msgid_value_from_nvram();
    msgId = (U32) (g_jmms_normal_msgid) + 1;
    if (msgId >= MMI_JMMS_MAX_NORMAL_MSG_ID)
    {
        msgId = MMI_JMMS_MAX_JAVA_MSG_ID + 1;
    }
#ifdef __MMI_UNIFIED_MESSAGE__
    if (extraBytes != NULL)
    {
        *extraBytes = msgId | *extraBytes;
        eRet = mmi_jmms_jdi_save_msg(
                g_jmms_context->hStoreHandle,
                (JC_CHAR*) folder_name,
                0,
                MsgHeaders,
                Content,
                uiMsgIndex,
                *extraBytes);
    }
    else
#endif /* __MMI_UNIFIED_MESSAGE__ */ 
        eRet = mmi_jmms_jdi_save_msg(
                g_jmms_context->hStoreHandle,
                (JC_CHAR*) folder_name,
                0,
                MsgHeaders,
                Content,
                uiMsgIndex,
                msgId);

    if (JC_OK != eRet)
    {
        if (JC_ERR_STORE_FILE_CORRUPTED == eRet)
        {
            eRet = mmi_jmms_restore_folder_info();
        }
    }
    else
    {
        g_jmms_normal_msgid = msgId;
        mmi_jmms_set_normal_msgid_value_to_nvram();
    }

    jdd_MemFree(folder_name);

    /* sandeep there is no need to update for saving notification
    if (eRet == JC_OK)
    {
        mmi_jmms_update_status_icon_indicator();
    }
    */
    return eRet;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_get_message
 * DESCRIPTION
 *  
 * PARAMETERS
 *  pFolderName     [?]         [?]
 *  Content         [?]         [?]
 *  index           [IN]        
 * RETURNS
 *  
 *****************************************************************************/
JC_RETCODE mmi_jmms_get_message(S8 *pFolderName, CONTENT_DATA *Content, JC_INT32 index)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JC_RETCODE eRet = JC_OK;
    MESSAGE_LIST *pMessageList = NULL;
    RETRIEVE_FILTERS StoreRetFilter = {0, };

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

    if (JC_OK != eRet)
    {
        return eRet;
    }
    ///TODO:: need to check this step whether require and check if require get only for
    //index
    ///manish chnging here 0n 2 Feb
    StoreRetFilter.uiStartIndex = index;
    StoreRetFilter.uiNumMessage = 1;
    StoreRetFilter.eRetrieve = E_RETRIEVE_BY_INDEX;
    eRet = mmi_jmms_jdi_get_msg_list(g_jmms_context->hStoreHandle, &pMessageList, &StoreRetFilter);

    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)
    {
        eRet = mmi_jmms_jdi_get_msg(g_jmms_context->hStoreHandle, index, Content);
    }

    return eRet;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_store_move_message
 * DESCRIPTION
 *  
 * PARAMETERS
 *  pSrcFolderName      [?]     [?]
 *  pDestFolderName     [?]     [?]
 *  uiMsgIndex          [?]     [?]
 * RETURNS
 *  
 *****************************************************************************/
JC_RETCODE mmi_jmms_store_move_message(S8 *pSrcFolderName, S8 *pDestFolderName, JC_UINT32 *uiMsgIndex)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U32 len = 0;
    S8 *folder_name = NULL;
    JC_RETCODE eRet = JC_OK;
    MESSAGE_LIST *pMessageList = NULL;
    RETRIEVE_FILTERS StoreRetFilter = {0, };

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    eRet = mmi_jmms_set_active_folder(pSrcFolderName);
    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);
                if (eRet != JC_OK)
                {
                    goto END;
                }
            }
            else
            {
                goto END;
            }
        }
        else
        {
            goto END;
        }

    }

    len = (strlen((S8*) pDestFolderName) + 1) * ENCODING_LENGTH;
    folder_name = (S8*) jdd_MemAlloc(sizeof(S8), len);
    if (NULL == folder_name)
    {
        return JC_ERR_MEMORY_ALLOCATION;
    }

    AnsiiToUnicodeString((S8*) folder_name, (PS8) pDestFolderName);

    eRet = mmi_jmms_jdi_move_msg(g_jmms_context->hStoreHandle, (JC_UINT32) (*uiMsgIndex), (JC_CHAR*) folder_name);
    if (JC_OK != eRet)
    {
        if (JC_ERR_STORE_FILE_CORRUPTED == eRet)
        {
            eRet = mmi_jmms_restore_folder_info();
            if (eRet != JC_OK)
            {
                goto END;
            }
        }
        else
        {
            goto END;
        }

    }

    eRet = mmi_jmms_jdi_update_msg_list(g_jmms_context->hStoreHandle, E_FALSE);
    if (JC_ERR_STORE_FILE_CORRUPTED == eRet)
    {
        eRet = mmi_jmms_restore_folder_info();
    }
  END:

    jdd_MemFree(folder_name);
    return eRet;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_store_update_message
 * DESCRIPTION
 *  
 * PARAMETERS
 *  pFolderName     [?]         [?]
 *  uiMsgIndex      [?]         [?]
 *  MsgHeaders      [?]         [?]
 *  Content         [?]         [?]
 *  extraBytes      [IN]        
 * RETURNS
 *  
 *****************************************************************************/
JC_RETCODE mmi_jmms_store_update_message(
            S8 *pFolderName,
            JC_UINT32 *uiMsgIndex,
            MESSAGE_HEADERS *MsgHeaders,
            CONTENT_DATA *Content,
            JC_UINT32 extraBytes)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JC_RETCODE eRet = JC_OK;
    MESSAGE_LIST *pMessageList = NULL;
    RETRIEVE_FILTERS StoreRetFilter = {0, };
    U32 msgId = 0;
    MMI_BOOL isJavaMsg = MMI_FALSE;
    JC_INT8 *content_type = NULL;
    JC_UINT32 new_extraBytes = 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);
            }
        }
        if (eRet != JC_OK)
        {
            return eRet;
        }
    }
	if( pMessageList == NULL)
	{
		return -1;
	}
    mmi_jmms_get_content_type(Content, &content_type);

    if (content_type != NULL)
    {
        isJavaMsg = mmi_jsr_check_recv_mms_for_java(content_type);
    }

    if (isJavaMsg == MMI_TRUE)
    {
        mmi_jmms_get_java_msgid_value_from_nvram();
        msgId = (U32) (g_jmms_java_msgid) + 1;
        if (msgId >= MMI_JMMS_MAX_JAVA_MSG_ID)
        {
            msgId = 0;
        }

    }
    else
    {
        msgId = (U32) (pMessageList->uiExtraBytes & 0x00FFFFFF);
    }

    if (extraBytes != 0)
    {
        new_extraBytes = (extraBytes & 0xFF000000);
    }
    else
    {
        new_extraBytes = (pMessageList->uiExtraBytes & 0xFF000000);

    }

    new_extraBytes |= msgId;

    eRet = mmi_jmms_jdi_update_msg(g_jmms_context->hStoreHandle, *uiMsgIndex, MsgHeaders, Content, new_extraBytes);

⌨️ 快捷键说明

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