📄 jmmspushhandling.c
字号:
GetRootTitleIcon(MAIN_MENU_MESSAGES_MENUID),
0,
0,
0,
0,
(U8*) GetString(STR_ID_JMMS_LOADING_MMS),
IMG_GLOBAL_PROGRESS,
NULL);
ClearAllKeyHandler();
}
#endif
/*****************************************************************************
* FUNCTION
* mmi_jmms_handle_new_mms_notification
* DESCRIPTION
*
* PARAMETERS
* view_content [?] [?] [?]
* hMsgHandle [IN]
* pNotifyIndHdrs [?] [?] [?]
* RETURNS
* void
*****************************************************************************/
void mmi_jmms_handle_new_mms_notification(
CONTENT_DATA *view_content,
MSG_HANDLE hMsgHandle,
MESSAGE_NOTIFICATION *pNotifyIndHdrs)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
#ifndef __MMI_MMS_OMA_CONF_273__
JC_UINT32 temp;
#endif
U32 roaming_status;
U8 retrieval_mode;
JC_RETCODE eRet = JC_OK;
JC_UINT32 msg_index;
/* JC_UINT32 msgid = 0; */
MESSAGE_HEADERS *pMsgHdrs = NULL;
JC_UINT32 mms_index = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* /check the retrival mnode */
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "mmi_jmms_handle_new_mms_notification"));
roaming_status = g_jmms_context->curr_roaming_state;
if (roaming_status == 1)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "jmms Roaming status is 1."));
if (E_ROAMING_RETRIEVAL_AS_HOME == (U16) mmi_jmms_retrieval_settings_roaming_retrieval_mode())
{
retrieval_mode = mmi_jmms_retrieval_settings_home_network_retrieval_mode();
}
else
{
retrieval_mode = mmi_jmms_retrieval_settings_roaming_retrieval_mode();
}
}
else
{
retrieval_mode = mmi_jmms_retrieval_settings_home_network_retrieval_mode();
}
if (retrieval_mode == E_ROAMING_RETRIEVAL_RESTRICTED) /* /E_ROAMING_RETRIEVAL_IMMEDAITE and E_HOME_NOETWORK_RETRIEVAL_IMMEDAITE */
/* have same values */
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "jmms Retrival Mode: %s", "RETRIEVAL_RESTRICTED"));
eRet = mmi_jmms_notification_reponse(pNotifyIndHdrs, E_MSG_REJECTED);
return;
}
#ifndef __MMI_MMS_OMA_CONF_273__
/* /check the filters */
temp = 1024 * (JC_UINT32) mmi_jmms_retrieval_settings_msg_size_filter(); /* in bytes */
#endif /* __MMI_MMS_OMA_CONF_273__ */
if ((pNotifyIndHdrs->eMsgClass == E_MSG_ADVERTISEMENT_CLASS &&
E_REJECT == mmi_jmms_retrieval_settings_advertisment_filter()) || ((pNotifyIndHdrs->pFrom == NULL) &&
E_REJECT ==
mmi_jmms_retrieval_settings_anonymous_filter
())
#ifndef __MMI_MMS_OMA_CONF_273__
|| (pNotifyIndHdrs->uiMessageSize > temp)
#endif
)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "jmms send the notification response with Reject Status"));
/* /send the notfication response with reject status */
eRet = mmi_jmms_notification_reponse(pNotifyIndHdrs, E_MSG_REJECTED);
return;
}
#ifdef __MMI_MMS_OMA_CONF_273__
if(pNotifyIndHdrs->uiMessageSize > MAX_MMS_MSG_SIZE)
{
retrieval_mode = E_ROAMING_RETRIEVAL_DEFFERED;
}
#endif
#ifdef __USB_IN_NORMAL_MODE__
if (mmi_jmms_check_usb_mode() == 1)
{
retrieval_mode = E_ROAMING_RETRIEVAL_DEFFERED;
}
#endif /* __USB_IN_NORMAL_MODE__ */
if (retrieval_mode == E_ROAMING_RETRIEVAL_IMMEDAITE)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "jmms retrival mode: %s", "RETRIEVAL_IMMEDAITE"));
eRet = mmi_jmms_jdi_get_msg_headers(hMsgHandle, &pMsgHdrs);
if (JC_OK == eRet)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "jmms saving the notification into InBox."));
/* save notification in inbox. */
eRet = mmi_jmms_save_message_buffer_in_Store("Inbox", &(mms_index), pMsgHdrs, view_content, NULL);
if(eRet == JC_OK)
mmi_jmms_set_msg_as_unread(mms_index-1);
if (eRet != JC_OK)
{
mms_index = 0; /* it means notification didn't save successfully */
if (eRet == JC_ERR_MEMORY_ALLOCATION || eRet == JC_ERR_FILE_WRITE)
{
eRet = mmi_jmms_add_pending_mms_info_node(
(U16) STR_ID_JMMS_MEMORY_ERROR_NEW_MMS_NOTIF_SAVING,
(U8) E_MSG_TYPE_IDLE_SCREEN_POP_UP,
NULL);
}
else
{
eRet = mmi_jmms_add_pending_mms_info_node(
(U16) STR_ID_JMMS_ERROR_NEW_MMS_NOTIF_SAVING,
(U8) E_MSG_TYPE_IDLE_SCREEN_POP_UP,
NULL);
}
if (eRet == JC_OK)
{
mmi_jmms_check_for_idle_screen();
}
return;
}
else
{
#ifdef __MMI_UNIFIED_MESSAGE__
mmi_um_jmms_refresh_ind();
#else
mmi_jmms_refresh_inbox();
#endif
}
/* PMT VIKAS START 20060401 */
//mmi_jmms_update_status_icon_indicator();
/* PMT VIKAS END 20060401 */
}
else
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "jmms fail to get the MMS Header %d", eRet));
}
mmi_jmms_download_mms(pNotifyIndHdrs->pContentLocation, E_TYPE_IMMEDIATE_RETRIEVAL_FETCH, mms_index, 1);
}
else if (retrieval_mode == E_ROAMING_RETRIEVAL_DEFFERED)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "jmms Retrival Mode: %s", "RETRIEVAL_DEFFERED"));
eRet = mmi_jmms_notification_reponse(pNotifyIndHdrs, E_MSG_DEFERRED);
PRINT_INFORMATION_2((MMI_TRACE_INFO, "jmms saving the notification into InBox return: %d", eRet));
if (eRet == JC_OK)
{
eRet = mmi_jmms_jdi_get_msg_headers(hMsgHandle, &pMsgHdrs);
if (JC_OK == eRet)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "jmms saving the notification into InBox"));
/* save notification in inbox. */
eRet = mmi_jmms_save_message_buffer_in_Store("Inbox", &msg_index, pMsgHdrs, view_content, NULL);
if(eRet == JC_OK)
mmi_jmms_set_msg_as_unread(msg_index-1);
/* PMT VIKAS START 20060401 */
mmi_jmms_update_status_icon_indicator();
/* PMT VIKAS END 20060401 */
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s:%d", "save result", eRet));
if (eRet == JC_OK)
{
eRet = mmi_jmms_add_pending_mms_info_node(
(U16) msg_index,
(U8) E_MSG_TYPE_NOTIFICATION,
(S8*) pNotifyIndHdrs->pContentLocation);
if (eRet == JC_OK)
{
/* Display pop up according to idle screen or not. */
mmi_jmms_show_new_mms_pop_up();
}
#ifndef __MMI_UNIFIED_MESSAGE__
mmi_jmms_refresh_inbox_no_screen_update();
#endif
}
else
{
if (eRet == JC_ERR_MEMORY_ALLOCATION || eRet == JC_ERR_FILE_WRITE)
{
eRet = mmi_jmms_add_pending_mms_info_node(
(U16) STR_ID_JMMS_MEMORY_ERROR_NEW_MMS_NOTIF_SAVING,
(U8) E_MSG_TYPE_IDLE_SCREEN_POP_UP,
NULL);
}
else
{
eRet = mmi_jmms_add_pending_mms_info_node(
(U16) STR_ID_JMMS_ERROR_NEW_MMS_NOTIF_SAVING,
(U8) E_MSG_TYPE_IDLE_SCREEN_POP_UP,
NULL);
}
if (eRet == JC_OK)
{
mmi_jmms_check_for_idle_screen();
}
}
}
else
{
eRet = mmi_jmms_add_pending_mms_info_node(
(U16) STR_ID_JMMS_ERROR_NEW_MMS_NOTIF_SAVING,
(U8) E_MSG_TYPE_IDLE_SCREEN_POP_UP,
NULL);
if (eRet == JC_OK)
{
mmi_jmms_check_for_idle_screen();
}
}
}
}
}
///msg_index is used for immediate retrieval fetch to store the index of mms to be
//updated after downlaoding of mms
/*****************************************************************************
* FUNCTION
* mmi_jmms_download_mms
* DESCRIPTION
*
* PARAMETERS
* content_location [?] [?] [?]
* comm_state [IN]
* msg_index [IN]
* retry_counter [IN]
* RETURNS
*
*****************************************************************************/
JC_RETCODE mmi_jmms_download_mms(JC_INT8 *content_location, U16 comm_state, JC_UINT32 msg_index, U8 retry_counter)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
JC_RETCODE eRet = JC_OK;
COMM_FETCH_URL fetchUrlInfo = {0, };
JC_UINT32 uiReferenceID = 1;
S8 *temp_url = NULL;
S32 len = 0;
S8 *mms_content_location = NULL;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "mmi_jmms_download_mms"));
fetchUrlInfo.eContentMode = E_COMM_BUFFER;
len = (strlen((S8*) content_location) + 1);
/* adding for retry mechanism */
mms_content_location = (S8*) jdd_MemAlloc(sizeof(S8), len);
if (mms_content_location == NULL)
{
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
/* /commenitng for retry mechnaism */
temp_url = (S8*) jdd_MemAlloc(sizeof(S8), len * ENCODING_LENGTH);
if (temp_url == NULL)
{
eRet = JC_ERR_MEMORY_ALLOCATION;
goto END;
}
strcpy((char*)mms_content_location, (const char*)content_location);
AnsiiToUnicodeString((S8*) temp_url, (S8*) content_location);
fetchUrlInfo.pszURL = (JC_CHAR*) temp_url;
fetchUrlInfo.pszContentType = NULL;
fetchUrlInfo.uUserDataMode.pucPostData = NULL;
fetchUrlInfo.bIsFile = E_FALSE;
fetchUrlInfo.uiPostLen = 0;
fetchUrlInfo.pHeadersInfo = NULL;
fetchUrlInfo.eCommFetchType = E_COMM_FETCH_GET;
if (comm_state == E_TYPE_DEFFERED_RETRIEVAL_FETCH)
{
/*
* For deffered Retrieval need to use the g_jmms_context->uiReferenceID variable beacuse downloading screen
* is there and downloading can be cancelled. Also don't use this variable for Immediate Retrieval etc.
* because during Sending/Defered Downlaod there can be immediate retrieval so this varaiable can be overwritten.
*
* This variable is used during Sending/Deffered Downloading beacause Sending/Deffered Downlaoding can be
* cancelled by user and so we require this value in jdi_CommunicationStopReq().
* Also there is no harm on using the same varaible for sending and deffered retrieval because sending and
* deffered retrieval cann't be both together.
*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "jmms comm State: %s", "E_TYPE_DEFFERED_RETRIEVAL_FETCH"));
g_jmms_context->uiReferenceID = 0;
eRet = jdi_CommunicationFetchURL(g_jmms_context->hCommHandle, &fetchUrlInfo, &g_jmms_context->uiReferenceID);
if (eRet == JC_OK)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)", "JMMS Comm Fetch Download", g_jmms_context->uiReferenceID));
eRet = mmi_jmms_add_comm_node(
g_jmms_context,
g_jmms_context->uiReferenceID,
comm_state,
NULL,
msg_index,
retry_counter,
mms_content_location);
if (eRet != JC_OK)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)", "jmms fail to add comm node", eRet));
jdi_CommunicationFreeReference(g_jmms_context->hCommHandle, g_jmms_context->uiReferenceID);
g_jmms_context->uiReferenceID = 0;
eRet = JC_ERR_MEMORY_ALLOCATION;
}
}
}
else
{
eRet = jdi_CommunicationFetchURL(g_jmms_context->hCommHandle, &fetchUrlInfo, &uiReferenceID);
if (eRet == JC_OK)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)", "JMMS Comm Fetch Download", uiReferenceID));
eRet = mmi_jmms_add_comm_node(
g_jmms_context,
uiReferenceID,
comm_state,
NULL,
msg_index,
retry_counter,
mms_content_location);
if (eRet != JC_OK)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)", "jmms fail to add comm node", eRet));
jdi_CommunicationFreeReference(g_jmms_context->hCommHandle, uiReferenceID);
eRet = JC_ERR_MEMORY_ALLOCATION;
}
}
}
END:
if (temp_url != NULL)
{
jdd_MemFree(temp_url);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -