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

📄 jmmspushhandling.c

📁 MTK手机平台的MMI部分的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                if (isInCall() == FALSE)
                {
                     //sandeep
		     PlayMessageArrivalTone();
		     //sandeep
                }
            }
        #endif /* __MMI_KEYPAD_LOCK_PATTERN_1__ || __MMI_KEYPAD_LOCK_PATTERN_3__ || __MMI_KEYPAD_LOCK_PATTERN_4__ */      //KP Jerry add "__MMI_KEYPAD_LOCK_PATTERN_3__" on 2007-3-27


        #if defined(__MMI_KEYPAD_LOCK_PROMPT_TEXT__)
            SetGroupKeyHandler(
                EntryScrKeyPadLockOnPessingAnyKey,
                (PU16) PresentAllKeys,
                (U8) TOTAL_KEYS,
                (U16) KEY_EVENT_DOWN);
        #endif /* defined(__MMI_KEYPAD_LOCK_PROMPT_TEXT__) */ 

        #if defined(__MMI_TOUCH_SCREEN__) && (!defined(__MMI_TOUCH_SCREEN_WITH_NUMERIC_KEY__) || defined(__MMI_SLIDE__)) //KP Jerry add "!defined(__MMI_TOUCH_SCREEN_WITH_NUMERIC_KEY__)" on 2007-3-26
			#ifdef __MMI_KEYPAD_LOCK_PROMPT_TEXT__
				#if defined(__MMI_KEYPAD_LOCK_PATTERN_1__) || defined(__MMI_KEYPAD_LOCK_PATTERN_3__) || defined(__MMI_KEYPAD_LOCK_PATTERN_4__)     //KP Jerry add "__MMI_KEYPAD_LOCK_PATTERN_3__" on 2007-3-27
					SetRightSoftkeyFunction(EntryScrKeyPadLockOnPessingAnyKey, KEY_EVENT_DOWN);
				#endif 

				#ifdef __MMI_KEYPAD_LOCK_PATTERN_2__
					SetLeftSoftkeyFunction(EntryScrKeyPadLockOnPessingAnyKey, KEY_EVENT_DOWN);
				#endif 
			#else
				ClearKeyHandler(KEY_LSK, KEY_EVENT_DOWN);
				ClearKeyHandler(KEY_LSK, KEY_EVENT_UP);
				ClearKeyHandler(KEY_RSK, KEY_EVENT_DOWN);
				ClearKeyHandler(KEY_RSK, KEY_EVENT_UP);
			#endif /* __MMI_KEYPAD_LOCK_PROMPT_TEXT__ */ 
			SetKeyHandler(EntryScrAfterPessingRSK, KEY_SEND, KEY_EVENT_DOWN);
        #else/* __MMI_TOUCH_SCREEN__ && !__MMI_TOUCH_SCREEN_WITH_NUMERIC_KEY__ */ //KP Jerry add "!__MMI_TOUCH_SCREEN_WITH_NUMERIC_KEY__" on 2007-3-26 
			#if defined(__MMI_KEYPAD_LOCK_PATTERN_1__) || defined(__MMI_KEYPAD_LOCK_PATTERN_3__) || defined(__MMI_KEYPAD_LOCK_PATTERN_4__)     //KP Jerry add "__MMI_KEYPAD_LOCK_PATTERN_3__" on 2007-3-27
				SetRightSoftkeyFunction(EntryScrAfterPessingRSK, KEY_EVENT_DOWN);
			#endif 

			#ifdef __MMI_KEYPAD_LOCK_PATTERN_2__
				SetLeftSoftkeyFunction(EntryScrAfterPessingRSK, KEY_EVENT_DOWN);
			#endif 
        #endif /* __MMI_TOUCH_SCREEN__ && !__MMI_TOUCH_SCREEN_WITH_NUMERIC_KEY__ */ //KP Jerry add "!__MMI_TOUCH_SCREEN_WITH_NUMERIC_KEY__" on 2007-3-26 
        ClearKeyHandler(KEY_END, KEY_EVENT_DOWN);
        #ifdef __MMI_TOUCH_SCREEN__
            mmi_idle_pen_block(); 
        #endif
        }
    }   /* vikas added */
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_delete_mms_pop_up_node
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_jmms_delete_mms_pop_up_node(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    jmms_pending_mms_info_struct *node = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "mmi_jmms_delete_mms_pop_up_node"));

    node = g_jmms_context->pending_mms_info_list;

    if (node == NULL)
    {
        GoBackToHistory(IDLE_SCREEN_ID);
        return;
    }

    if (node->type == E_MSG_TYPE_DELIVERY_REPORT)
    {
        jmms_pending_mms_delivery_reports_struct *node1 = NULL;

        if (g_jmms_context->pending_delivery_reports != NULL)
        {

            node1 = g_jmms_context->pending_delivery_reports->next;
            if (g_jmms_context->pending_delivery_reports->to_p != NULL)
            {
                jdd_MemFree(g_jmms_context->pending_delivery_reports->to_p);
            }
            jdd_MemFree(g_jmms_context->pending_delivery_reports);
            g_jmms_context->pending_delivery_reports = node1;
        }
    }
    else if (node->type == E_MSG_TYPE_READ_REPORT_RESPONSE)
    {
        jmms_pending_mms_read_reports_struct *node1 = NULL;

        if (g_jmms_context->pending_read_reports != NULL)
        {

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

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

    jdd_MemFree(node);
    node = NULL;

    GoBackToHistory(IDLE_SCREEN_ID);

    return;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_handle_mms_pop_up
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_jmms_handle_mms_pop_up(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    jmms_pending_mms_info_struct *node = NULL;

    JC_RETCODE eRet = JC_OK;
    JC_INT32 index = 0;
    CONTENT_DATA Content = {0, };

    U8 type;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "mmi_jmms_handle_mms_pop_up"));

    node = g_jmms_context->pending_mms_info_list->next;

    index = (JC_INT32) g_jmms_context->pending_mms_info_list->Index;
    type = g_jmms_context->pending_mms_info_list->type;

    ///set the msg status as open for At Delete
    ///It will reset on going to idle screen
    g_jmms_context->msg_open_status[0] = E_JMMS_INBOX;
    /* PMT HIMANSHU START 20060425 */
    g_jmms_context->msg_open_status[1] = (U32) mmi_jmms_get_message_id(MMI_JMMS_INBOX, index);
    /* PMT HIMANSHU END 20060425 */

    switch (type)
    {
        case E_MSG_TYPE_NOTIFICATION:
        {
            PRINT_INFORMATION_2((MMI_TRACE_INFO, "jmms msg type: %s", "E_MSG_TYPE_NOTIFICATION"));
            if (g_jmms_context->pending_mms_info_list->mms_url == NULL)
            {

                jdd_MemFree(g_jmms_context->pending_mms_info_list);
                g_jmms_context->pending_mms_info_list = NULL;

                g_jmms_context->pending_mms_info_list = node;
                return;
            }

            eRet = mmi_jmms_download_mms(
                    (JC_INT8*) g_jmms_context->pending_mms_info_list->mms_url,
                    E_TYPE_DEFFERED_RETRIEVAL_FETCH,
                    index,
                    1);
            if (eRet == JC_OK)
            {
                g_jmms_context->last_scr_id = IDLE_SCREEN_ID;
                g_jmms_context->progress_screen_title = STR_ID_JMMS_MMS_DOWNLOADING;
                memset(g_jmms_context->g_jmms_progress_str, 0x00, MAX_PROGRESS_SCREEN_HINT_LEN * ENCODING_LENGTH);
                mmi_jmms_entry_communication_progress_screen();
            }
            else
            {
                PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)", "jmms fail to download the message", eRet));
            }

            mmi_jmms_free_pending_mms_info_node();

            g_jmms_context->pending_mms_info_list = node;

            return;
        }

        case E_MSG_TYPE_DELIVERY_REPORT:
        {
            jmms_pending_mms_delivery_reports_struct *node1 = NULL;

            PRINT_INFORMATION_2((MMI_TRACE_INFO, "jmms msg type: %s", "E_MSG_TYPE_DELIVERY_REPORT"));
            if (g_jmms_context->pending_delivery_reports == NULL)
            {
                /* no delivery report node present */
                mmi_jmms_free_pending_mms_info_node();
                g_jmms_context->pending_mms_info_list = node;
                return;
            }

            g_jmms_context->last_scr_id = IDLE_SCREEN_ID;

            eRet = mmi_jmms_create_delivery_report_header_for_idle_screen(g_jmms_context->pending_delivery_reports);
            if (eRet != JC_OK)
            {
                mmi_jmms_error_handler(eRet);
            }
            else
            {
                /* /for setting read status */
                mmi_jmms_set_msg_as_read((U8) (index - 1));
                mmi_jmms_entry_show_delivery_report_screen();

            }

            /* /free the delivery report node */
            node1 = g_jmms_context->pending_delivery_reports->next;
            if (g_jmms_context->pending_delivery_reports->to_p != NULL)
            {
                jdd_MemFree(g_jmms_context->pending_delivery_reports->to_p);
            }
            jdd_MemFree(g_jmms_context->pending_delivery_reports);
            g_jmms_context->pending_delivery_reports = node1;

            /* free the node for general message */
            mmi_jmms_free_pending_mms_info_node();
            g_jmms_context->pending_mms_info_list = node;

            return;
        }
        case E_MSG_TYPE_READ_REPORT_RESPONSE:
        {
            jmms_pending_mms_read_reports_struct *node1 = NULL;

            PRINT_INFORMATION_2((MMI_TRACE_INFO, "jmms msg type: %s", "E_MSG_TYPE_READ_REPORT_RESPONSE"));
            if (g_jmms_context->pending_read_reports == NULL)
            {
                //no report report node present
                //free the node for general message
                mmi_jmms_free_pending_mms_info_node();
                g_jmms_context->pending_mms_info_list = node;
                return;
            }

            g_jmms_context->last_scr_id = IDLE_SCREEN_ID;

            eRet = mmi_jmms_create_read_report_header_for_idle_screen(g_jmms_context->pending_read_reports);
            if (eRet != JC_OK)
            {
                mmi_jmms_error_handler(eRet);
            }
            else
            {
                /* /for setting read status */
                mmi_jmms_set_msg_as_read((U8) (index - 1));
                mmi_jmms_entry_show_read_report_screen();
            }

            /* /free the read report node */
            node1 = g_jmms_context->pending_read_reports->next;
            if (g_jmms_context->pending_read_reports->from_p != NULL)
            {
                jdd_MemFree(g_jmms_context->pending_read_reports->from_p);
            }
            jdd_MemFree(g_jmms_context->pending_read_reports);
            g_jmms_context->pending_read_reports = node1;

            /* free the node for general message */
            mmi_jmms_free_pending_mms_info_node();
            g_jmms_context->pending_mms_info_list = node;

            return;

        }

    }   /* /switch(type) */

    mmi_jmms_free_pending_mms_info_node();

    g_jmms_context->pending_mms_info_list = node;

    Content.bIsStream = E_TRUE;
    eRet = mmi_jmms_get_message("Inbox", &Content, index);

    if (eRet != JC_OK)
    {
        PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)", "jmms fail to get messages from InBox.", eRet));
        DisplayPopup((PU8) GetString(STR_ID_JMMS_ERROR_GET_MSG_LIST), IMG_GLOBAL_ERROR, 1, JMMS_POPUP_TIME, ERROR_TONE);
        goto END;
    }

    mmi_jmms_deinit_mms_context(g_jmms_context);

    eRet = mmi_jmms_jdi_parse_msg_buffer(&g_jmms_context->msg_handle, &Content, E_TYPE_MMS, E_FALSE);

    /* Async changes begin */
    while (eRet == JC_ERR_MMS_PARSE_PENDING)
    {
        eRet = mmi_jmms_jdi_msg_parse_continue(g_jmms_context->msg_handle);
    }
    /* Async changes end */

    if (JC_OK != eRet)
    {
        PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)", "jmms parsing failed!", eRet));
        if (g_jmms_context->msg_handle != NULL)
        {
            PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "Deinitializing the msg header."));
            mmi_jmms_jdi_msg_deinit(g_jmms_context->msg_handle);
            g_jmms_context->msg_handle = NULL;
        }
        goto END;
    }

    eRet = mmi_jmms_jdi_get_msg_headers(g_jmms_context->msg_handle, (MESSAGE_HEADERS **) (&g_jmms_context->MsgHeaders_p));
    if (JC_OK != eRet)
    {
        PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)", "jmms fail to get the msg header", eRet));
        mmi_jmms_jdi_msg_deinit(g_jmms_context->msg_handle);
        g_jmms_context->msg_handle = NULL;
        goto END;
    }

    switch (((MESSAGE_HEADERS*) g_jmms_context->MsgHeaders_p)->eMsgType)
    {

        case E_MSG_TYPE_RECEIVE:
        {
            g_jmms_context->MsgHeader_type_p =
                (MESSAGE_RETRIEVAL*) ((MESSAGE_HEADERS*) g_jmms_context->MsgHeaders_p)->pHeaders;

            /* /for setting read status */
            mmi_jmms_set_msg_as_read((U8) (index - 1));

            g_jmms_context->mms_index = index;

            g_jmms_context->last_scr_id = IDLE_SCREEN_ID;

            g_jmms_context->is_unread_msg_deleted = 0;

        #ifdef __MMI_UNIFIED_MESSAGE__
            g_jmms_context->show_property_screen = MMI_FALSE;
        #endif 
            mmi_jmms_handle_read_report(g_jmms_context->MsgHeader_type_p);
            break;
        }

        default:
   

⌨️ 快捷键说明

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