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

📄 jmmsumhandling.c

📁 MTK手机平台的MMI部分的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
    tzdiff =  time.nHour * 3600 + time.nMin * 60 + time.nSec;  //mmi_dt_mytime_2_utc_sec(&time, MMI_TRUE);
    while (msg_list_p != NULL && msg_list_p->um_msg_info->msg_index != mms_info_rsp->start_entry)
    {
        msg_list_p = msg_list_p->next;
    }

    for (msg_counter = 0; (msg_list_p != NULL && msg_counter <= mms_info_rsp->msg_number); msg_counter++)
    {
        mms_info_rsp->msg_info[msg_counter].timestamp = msg_list_p->um_msg_info->timestamp;
        if(mms_info_rsp->msg_info[msg_counter].timestamp)
        {
            if(tz > 0)
            {
                mms_info_rsp->msg_info[msg_counter].timestamp += tzdiff;
            }
            else
            {
                mms_info_rsp->msg_info[msg_counter].timestamp -= tzdiff;
            }
        }
        switch (msg_list_p->attachment_status)
        {
            case E_JMMS_ATTACHMENT_PRESENT:
                mms_info_rsp->msg_info[msg_counter].icon_id = IMG_ID_JMMS_MMS_WITH_ATTACHMENT;
                break;
            case E_JMMS_ATTACHMENT_NOT_PRESENT:
                mms_info_rsp->msg_info[msg_counter].icon_id = IMG_ID_JMMS_MMS_WITHOUT_ATTACHMENT;
                break;
            default:
                mms_info_rsp->msg_info[msg_counter].icon_id = IMG_ID_JMMS_MMS_WITHOUT_ATTACHMENT;
                break;
                break;
        }
        mms_info_rsp->msg_info[msg_counter].msg_index = msg_list_p->um_msg_info->msg_index;
        pfnUnicodeStrcpy((S8*) mms_info_rsp->msg_info[msg_counter].address, (S8*) msg_list_p->um_msg_info->address);
        mms_info_rsp->msg_info[msg_counter].address_length = msg_list_p->um_msg_info->address_length;
        mms_info_rsp->msg_info[msg_counter].address_type = msg_list_p->um_msg_info->address_type;
        pfnUnicodeStrcpy((S8*) mms_info_rsp->msg_info[msg_counter].subject, (S8*) msg_list_p->um_msg_info->subject);
        mms_info_rsp->msg_info[msg_counter].subject_length = msg_list_p->um_msg_info->subject_length;
        if (mms_info_rsp->msg_info[msg_counter].address_type == UM_ADDR_TYPE_PHONE_NUMBER)
        {
            name = (S8*) lookUpNumber((PS8) mms_info_rsp->msg_info[msg_counter].address);
            if (pfnUnicodeStrlen(name))
            {
                pfnUnicodeStrncpy(
                    (S8*) mms_info_rsp->msg_info[msg_counter].address,
                    (S8*) name,
                    pfnUnicodeStrlen(name));
                mms_info_rsp->msg_info[msg_counter].address_length = pfnUnicodeStrlen(name);
            }
        }
        name = NULL;
        msg_list_p = msg_list_p->next;
    }   /* End of For Loop */
}


/*****************************************************************************
 * FUNCTION
 *  mmi_um_jmms_parse_mms_for_attachment
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_um_jmms_parse_mms_for_attachment(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JC_RETCODE eRet = JC_OK;
    U8 number = 0;
    um_jmms_attachment_present_list *temp_pending_list_p = NULL;
    mmi_um_get_list_rsp_struct *mms_info_rsp = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    mms_info_rsp = (mmi_um_get_list_rsp_struct*) g_um_jmms_rsp_struct;
    temp_pending_list_p = g_jmms_context->g_attachment_pending_list;

    if (g_jmms_context->pParseContent == NULL)
    {
        g_jmms_context->pParseContent = (CONTENT_DATA*) jdd_MemAlloc(sizeof(CONTENT_DATA), 1);
    }
    g_jmms_context->pParseContent->bIsStream = E_TRUE;
    if (g_jmms_context->msg_handle != NULL)
    {
        mmi_jmms_jdi_msg_deinit(g_jmms_context->msg_handle);
        g_jmms_context->msg_handle = NULL;
    }
    if (temp_pending_list_p != NULL)
    {

        switch (mms_info_rsp->msg_box_type)
        {
            case UM_MSG_BOX_TYPE_INBOX:
                mmi_mms_get_number_of_messages(MMI_JMMS_INBOX, &number);
                eRet = mmi_jmms_get_message(
                        MMI_JMMS_INBOX,
                        g_jmms_context->pParseContent,
                        number - temp_pending_list_p->index_to_parse);
                break;
            case UM_MSG_BOX_TYPE_UNSENT:
                mmi_mms_get_number_of_messages(MMI_JMMS_OUTBOX, &number);
                eRet = mmi_jmms_get_message(
                        MMI_JMMS_OUTBOX,
                        g_jmms_context->pParseContent,
                        number - temp_pending_list_p->index_to_parse);
                break;
            case UM_MSG_BOX_TYPE_SENT:
                mmi_mms_get_number_of_messages(MMI_JMMS_SENT, &number);
                eRet = mmi_jmms_get_message(
                        MMI_JMMS_SENT,
                        g_jmms_context->pParseContent,
                        number - temp_pending_list_p->index_to_parse);
                break;
            case UM_MSG_BOX_TYPE_DRAFT:
                mmi_mms_get_number_of_messages(MMI_JMMS_DRAFTS, &number);
                eRet = mmi_jmms_get_message(
                        MMI_JMMS_DRAFTS,
                        g_jmms_context->pParseContent,
                        number - temp_pending_list_p->index_to_parse);
                break;
        }

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

        eRet = mmi_jmms_jdi_parse_msg_buffer(
                &g_jmms_context->msg_handle,
                g_jmms_context->pParseContent,
                E_TYPE_MMS,
                E_TRUE);

        if (eRet == JC_ERR_MMS_PARSE_PENDING)
        {
            mmi_jmms_parse_continue_start_timer(
                g_jmms_context->msg_handle,
                mmi_um_jmms_parse_attachment_async_callback, mmi_jmms_only_abort_parsing_progress);
            return;
        }
    }
    mmi_um_jmms_parse_attachment_async_callback(eRet);
    return;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_um_jmms_get_fill_list
 * DESCRIPTION
 *  
 * PARAMETERS
 *  mms_list_rsp        [?]     
 *  msg_list_req        [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_um_jmms_get_fill_list(mmi_um_get_list_rsp_struct *mms_list_rsp, mmi_um_get_list_req_struct *msg_list_req)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JC_RETCODE eRet = JC_OK;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    g_jmms_context->store_context->jmms_start_index = mms_list_rsp->start_entry + 1;
    switch (mms_list_rsp->msg_box_type)
    {
        case UM_MSG_BOX_TYPE_INBOX:
            eRet = mmi_jmms_get_folder_msg_list(
                    &(g_jmms_context->store_context->messages_list),
                    MMI_JMMS_INBOX,
                    mms_list_rsp->msg_number);
            break;

        case UM_MSG_BOX_TYPE_UNSENT:
            eRet = mmi_jmms_get_folder_msg_list(
                    &(g_jmms_context->store_context->messages_list),
                    MMI_JMMS_OUTBOX,
                    mms_list_rsp->msg_number);
            break;

        case UM_MSG_BOX_TYPE_SENT:
            eRet = mmi_jmms_get_folder_msg_list(
                    &(g_jmms_context->store_context->messages_list),
                    MMI_JMMS_SENT,
                    mms_list_rsp->msg_number);
            break;

        case UM_MSG_BOX_TYPE_DRAFT:
            eRet = mmi_jmms_get_folder_msg_list(
                    &(g_jmms_context->store_context->messages_list),
                    MMI_JMMS_DRAFTS,
                    mms_list_rsp->msg_number);
            break;
    }
    if (eRet != JC_OK || g_jmms_context->store_context->messages_list == NULL)
    {
        return;
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_um_jmms_generate_list
 * DESCRIPTION
 *  
 * PARAMETERS
 *  mms_list_rsp        [?]     
 * RETURNS
 *  
 *****************************************************************************/
JC_RETCODE mmi_um_jmms_generate_list(mmi_um_get_list_rsp_struct *mms_list_rsp)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JC_RETCODE eRet = JC_OK;
    S32 msg_counter = 0;
    U32 tzdiff = 0;
    applib_time_struct time;
    FLOAT tz;

    jmms_folder_msgs_list *msg_list_p = g_jmms_context->store_context->messages_list;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    msg_counter = 0;
    if (msg_list_p == NULL)
    {
        return JC_ERR_MEMORY_ALLOCATION;
    }
    tz = mmi_dt_get_tz();
    if(tz < 0)
    {
        time = applib_conv_tz_to_mytime(tz * (-1));
    }
    else
    {
        time = applib_conv_tz_to_mytime(tz);
    }
    tzdiff =  time.nHour * 3600 + time.nMin * 60 + time.nSec;
    while (msg_list_p != NULL)
    {
        mms_list_rsp->list_info[msg_counter].timestamp = msg_list_p->um_msg_info->timestamp;
        if(mms_list_rsp->list_info[msg_counter].timestamp)
        {
            if(tz > 0)
            {
                mms_list_rsp->list_info[msg_counter].timestamp += tzdiff;
            }
            else
            {
                mms_list_rsp->list_info[msg_counter].timestamp -= tzdiff;
            }
        }

        mms_list_rsp->list_info[msg_counter].msg_index = msg_list_p->um_msg_info->msg_index;
        msg_counter++;
        msg_list_p = msg_list_p->next;
    }
    return eRet;
}


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

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (g_jmms_context->msg_handle != NULL)
    {
        mmi_jmms_jdi_msg_deinit(g_jmms_context->msg_handle);
        g_jmms_context->msg_handle = NULL;
    }
    switch (g_jmms_context->store_context->current_folder_name)
    {
        case E_JMMS_INBOX:
            HistoryReplace(SCR_ID_UM_INBOX, SCR_ID_UM_INBOX, mmi_um_jmms_pre_entry_inbox);
            DeleteUptoScrID(SCR_ID_UM_INBOX);
            mmi_um_delete_highlight_folder(UM_MSG_BOX_TYPE_INBOX);
            break;

        case E_JMMS_OUTBOX:
            HistoryReplace(SCR_ID_UM_UNSENT, SCR_ID_UM_UNSENT, mmi_um_jmms_pre_entry_outbox);
            DeleteUptoScrID(SCR_ID_UM_UNSENT);
            mmi_um_delete_highlight_folder(UM_MSG_BOX_TYPE_UNSENT);
            break;

        case E_JMMS_SENT:
            HistoryReplace(SCR_ID_UM_SENT, SCR_ID_UM_SENT, mmi_um_jmms_pre_entry_sent);
            DeleteUptoScrID(SCR_ID_UM_SENT);
            mmi_um_delete_highlight_folder(UM_MSG_BOX_TYPE_SENT);
            break;

        case E_JMMS_DRAFTS:
            HistoryReplace(SCR_ID_UM_DRAFT, SCR_ID_UM_DRAFT, mmi_um_jmms_pre_entry_draft);
            DeleteUptoScrID(SCR_ID_UM_DRAFT);
            mmi_um_delete_highlight_folder(UM_MSG_BOX_TYPE_DRAFT);
            break;
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_um_jmms_get_push_message_count_req
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_um_jmms_get_push_message_count_req(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    MYQUEUE Message;
    mmi_um_get_msg_num_rsp_struct *mms_count_rsp_p;
    U8 total_num_unread_messages = 0;
    U8 number = 0;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    mms_count_rsp_p = (mmi_um_get_msg_num_rsp_struct*) OslConstructDataPtr(sizeof(mmi_um_get_msg_num_rsp_struct));
    mms_count_rsp_p->result = KAL_TRUE;
    mms_count_rsp_p->msg_type = UM_MSG_TYPE_MMS;
    mmi_jmms_get_number_of_unread_messages_in_inbox(&total_num_unread_messages);        /* mms_count_rsp_p->inbox_unread_msg_number = 0; */
    mmi_mms_get_number_of_messages(MMI_JMMS_INBOX, &number);
    mms_count_rsp_p->inbox_unread_msg_number = total_num_unread_messages;

⌨️ 快捷键说明

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