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

📄 jmmsjsrhandler.c

📁 MTK手机平台的MMI部分的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                        {
                            is_message_deleted = MMI_FALSE;
                            break;
                        }
                        else
                        {
                            if (strcmp(fname, "Inbox") == 0)
                            {
                                mmi_jmms_free_pending_node_if_present(msgIndex);
                                mmi_jmms_delete_msg_status((U8) (msgIndex - 1));
                            }
                            is_message_deleted = MMI_TRUE;
                            break;
                        }
                    }
                    else
                    {
                        is_message_deleted = MMI_FALSE;
                        break;
                    }
                }
                pTempMessageList = pTempMessageList->pNext;
            }

            if (done == MMI_TRUE)
            {
                break;
            }
            pFolderList = pFolderList->pNext;
        }

        if (is_message_deleted == MMI_FALSE)
        {
            eRet = JC_ERR_STORE_INVALID_MSG_INDEX;
        }
    }
    else
    {
        memset(fname, 0, 100);
        mmi_jmms_get_folder_name_from_folderId((U8) folderId, (S8*) fname);
        eRet = mmi_jmms_delete_all_message((S8*) fname);
    }
    /* Call the callback function */
    jmms_delete_callback(mmi_jmms_java_mms_error(eRet));
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_is_msg_open
 * DESCRIPTION
 *  
 * PARAMETERS
 *  fname           [?]         [?]
 *  msgId           [IN]        
 *  msg_index       [IN]        
 * RETURNS
 *  
 *****************************************************************************/
MMI_BOOL mmi_jmms_is_msg_open(S8 *fname, U32 msgId, U32 msg_index)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    mmi_jmms_folder_name_enum folder_id;
    MMI_BOOL is_open = MMI_FALSE;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (strcmp(fname, "Inbox") == 0)
    {
        folder_id = E_JMMS_INBOX;
    }
    else if (strcmp(fname, "Outbox") == 0)
    {
        folder_id = E_JMMS_OUTBOX;
    }
    else if (strcmp(fname, "Drafts") == 0)
    {
        folder_id = E_JMMS_DRAFTS;
    }
    else if (strcmp(fname, "Sent") == 0)
    {
        folder_id = E_JMMS_SENT;
    }
    else
    {
        return is_open;
    }

    if ((g_jmms_context->msg_open_status[0] == folder_id
         && g_jmms_context->msg_open_status[1] == (U32) (msgId))
        || (g_jmms_context->msg_open_status[0] == folder_id && g_jmms_context->msg_open_status[1] == 0))
    {
        is_open = MMI_TRUE;
        return is_open;
    }

    if (folder_id == E_JMMS_INBOX)
    {
        if (GetActiveScreenId() == SCR_ID_JMMS_NEW_MMS_IND)
        {

            if (g_jmms_context->pending_mms_info_list != NULL)
            {
                if (g_jmms_context->pending_mms_info_list->Index == msg_index)
                {
                    is_open = MMI_TRUE;
                }
            }
        }
    }

    return is_open;

}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_free_pending_node_if_present
 * DESCRIPTION
 *  
 * PARAMETERS
 *  msg_index       [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_jmms_free_pending_node_if_present(U32 msg_index)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    jmms_pending_mms_info_struct *node = NULL;
    jmms_pending_mms_info_struct *pre_node = NULL;
    U8 type;
    JC_INT32 index = 0;
    U8 delivery_report_index = 0, read_report_index = 0;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (g_jmms_context->pending_mms_info_list == NULL)
    {
        return;
    }

    node = g_jmms_context->pending_mms_info_list;
    pre_node = node;
    while (node != NULL)
    {
        index = (JC_INT32) (node->Index);
        type = node->type;

        if (type == E_MSG_TYPE_DELIVERY_REPORT)
        {
            delivery_report_index++;
        }
        else if (type == E_MSG_TYPE_READ_REPORT_RESPONSE)
        {
            read_report_index++;
        }

        if (index == msg_index)
        {
            break;
        }

        pre_node = node;
        node = node->next;
    }

    if (node == NULL)
    {
        return;
    }

    if (pre_node == node)
    {
        g_jmms_context->pending_mms_info_list = node->next;
    }
    else
    {
        pre_node->next = node->next;
    }

    if (node->mms_url != NULL)
    {
        jdd_MemFree(node->mms_url);
    }

    jdd_MemFree(node);
    node = NULL;

    if (type == E_MSG_TYPE_NOTIFICATION || type == E_MSG_TYPE_RECEIVE)
    {
        return;
    }

    switch (type)
    {

        case E_MSG_TYPE_DELIVERY_REPORT:
        {

            jmms_pending_mms_delivery_reports_struct *node1 = NULL;
            jmms_pending_mms_delivery_reports_struct *pre_node1 = NULL;

            node1 = g_jmms_context->pending_delivery_reports;
            if (g_jmms_context->pending_delivery_reports == NULL || delivery_report_index == 0)
            {
                return;
            }
            else
            {
                pre_node1 = node1;
                delivery_report_index--;

                while (delivery_report_index != 0 && node1 != NULL)
                {
                    pre_node1 = node1;
                    node1 = node1->next;
                    delivery_report_index--;
                }

                if (node1 == NULL)
                {
                    return;
                }

                if (pre_node1 == node1)
                {
                    g_jmms_context->pending_delivery_reports = node1->next;
                }
                else
                {
                    pre_node1->next = node1->next;
                }

                if (node1->to_p != NULL)
                {
                    jdd_MemFree(node1->to_p);
                }

                jdd_MemFree(node1);
                node1 = NULL;

            }

            return;
        }
        case E_MSG_TYPE_READ_REPORT_RESPONSE:
        {

            jmms_pending_mms_read_reports_struct *node1 = NULL;
            jmms_pending_mms_read_reports_struct *pre_node1 = NULL;

            node1 = g_jmms_context->pending_read_reports;
            if (g_jmms_context->pending_read_reports == NULL || read_report_index == 0)
            {
                return;
            }
            else
            {
                pre_node1 = node1;
                read_report_index--;

                while (read_report_index != 0 && node1 != NULL)
                {
                    pre_node1 = node1;
                    node1 = node1->next;
                    read_report_index--;
                }

                if (node1 == NULL)
                {
                    return;
                }

                if (pre_node1 == node1)
                {
                    g_jmms_context->pending_read_reports = node1->next;
                }
                else
                {
                    pre_node1->next = node1->next;
                }

                if (node1->from_p != NULL)
                {
                    jdd_MemFree(node1->from_p);
                }

                jdd_MemFree(node1);
                node1 = NULL;

            }

            return;
        }

    }   /* /switch(type) */
}

/* /java functions */


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_jsr_create_mms
 * DESCRIPTION
 *  
 * PARAMETERS
 *  message     [?]     [?]
 *  buffer      [?]     [?]
 * RETURNS
 *  
 *****************************************************************************/
JsrResult mmi_jmms_jsr_create_mms(wap_mmc_send_appmms_req_struct *message, U8 *buffer)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    U16 datalen = 0;
    JC_RETCODE eRet = JC_OK;
    MESSAGE_SEND *pMessageSend = NULL;
    MESSAGE_HEADERS *pMsgHeaders = NULL;
    MSG_HANDLE hMsgHandle = NULL;
    MM1_HDR_PARAM *pContentTypeParams = NULL;   /* For content type */
    MM1_HDR_PARAM *pTempContentTypeParams = NULL;
    MM1_HDR_PARAM *node = NULL;
    S8 *address = NULL;
    S8 *temp_address = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    mmi_jmms_free_mms_pdu_memory(g_jmms_context);

    eRet = mmi_jmms_jdi_msg_init(&hMsgHandle, NULL);
    if (JC_OK != eRet)
    {
        mmi_jmms_free_mms_pdu_memory(g_jmms_context);

        goto END;

    }
    eRet = mmi_jmms_jdi_set_msg_type(hMsgHandle, E_TYPE_MMS);
    if (JC_OK != eRet)
    {
        mmi_jmms_free_mms_pdu_memory(g_jmms_context);
        goto END;
    }

    if (message->mms_type == 0)
    {
        eRet = mmi_jmms_jdi_set_presentation_type(hMsgHandle, E_PRESENTATION_SMIL);
    }
    else if (message->mms_type == 1)
    {
        eRet = mmi_jmms_jdi_set_presentation_type(hMsgHandle, E_PRESENTATION_NONE);
    }
    if (JC_OK != eRet)
    {
        mmi_jmms_free_mms_pdu_memory(g_jmms_context);
        goto END;
    }

    g_jmms_context->MsgHeaders_p = (MESSAGE_HEADERS*) jdd_MemAlloc(sizeof(MESSAGE_HEADERS), 1);

    if (NULL == g_jmms_context->MsgHeaders_p)
    {
        mmi_jmms_free_mms_pdu_memory(g_jmms_context);

        eRet = JC_ERR_MEMORY_ALLOCATION;
        goto END;
    }

    g_jmms_context->MsgHeader_type_p = (MESSAGE_SEND*) jdd_MemAlloc(sizeof(MESSAGE_SEND), 1);
    if (NULL == g_jmms_context->MsgHeader_type_p)
    {
        mmi_jmms_free_mms_pdu_memory(g_jmms_context);

        eRet = JC_ERR_MEMORY_ALLOCATION;
        goto END;
    }

    pMsgHeaders = g_jmms_context->MsgHeaders_p;
    pMessageSend = g_jmms_context->MsgHeader_type_p;

    eRet = mmi_jmms_set_mmsc_version();
    if (eRet != JC_OK)

⌨️ 快捷键说明

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