システム開発 - MMSの機能はMTKの送信
研究/ *
機能*システムが(...); mmi_jmms_create_and_send_new_mms内から
*機能は、既にMMSのMMSの構造g_jmms_contextに構成されている
本来の機能は、GUIのコードに関連しているため*、しかし、外送信ダイレクトIF
*ので、ここで自分を設定するには、自動的に終了プログラムを引き起こす可能性が、MMSを送信する関数を呼び出します。
*コード内の元の関数を使用して、新しい機能が、削除およびGUI
*コードMyApp_send_mmsの一部は()が呼び出される
*/
JC_RETCODE MyApp_jmms_create_and_send_new_mms(
U16 message_setting,
mmi_jmms_context_struct *jmms_context_p,
MMI_BOOL is_create_for_send)
{
JC_RETCODE ret_code = JC_OK;
MESSAGE_SEND *message_send_p = NULL;
MESSAGE_HEADERS *msg_headers_p = NULL;
U8 ret = 0;
S32 len = 0;
MSG_HANDLE msg_handle = jmms_context_p->msg_handle;
/* free any allocated memory */
mmi_jmms_free_mms_pdu_memory(g_jmms_context); g_jmms_context->msg_headers_p = (MESSAGE_HEADERS*)jdd_MemAlloc(sizeof(MESSAGE_HEADERS), 1);
/* error handler */
if (NULL == g_jmms_context->msg_headers_p){
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
return JC_ERR_MEMORY_ALLOCATION;
}
g_jmms_context->msg_header_type_p = (MESSAGE_SEND*)jdd_MemAlloc(sizeof(MESSAGE_SEND), 1);
/* error handler */
if (NULL == g_jmms_context->msg_header_type_p){
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
return JC_ERR_MEMORY_ALLOCATION;
} msg_headers_p = g_jmms_context->msg_headers_p;
message_send_p = g_jmms_context->msg_header_type_p;
ret_code = mmi_jmms_set_mmsc_version();
/* error handler */
if (ret_code != JC_OK){
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
return ret_code;
} message_send_p->pVersion = (JC_INT8*) g_jmms_context->version;
if (wap_get_user_agent_brand() == EM_WAP_USERAGENT_BRAND_SE)
message_send_p->uiDate = get_current_utc_time(); message_send_p->bDeliveryReport = (g_jmms_context->sending_settings.delivery_report == 1) ? E_TRUE : E_FALSE;
message_send_p->bReadReport = (g_jmms_context->sending_settings.read_report == 1) ? E_TRUE : E_FALSE;
message_send_p->bHideSender = (g_jmms_context->sending_settings.hide_sender == 1) ? E_TRUE : E_FALSE;
message_send_p->uiExpiryTime = 0;
switch (g_jmms_context->sending_settings.validity_period){
case E_VALIDITY_PERIOD_MAX:
if (wap_get_user_agent_brand() != EM_WAP_USERAGENT_BRAND_SE)
message_send_p->uiExpiryTime = MAX_VALIDITY_PERIOD_VALUE;
break;
case E_VALIDITY_PERIOD_1HR:
message_send_p->uiExpiryTime = 3600;
break;
case E_VALIDITY_PERIOD_12HRS:
message_send_p->uiExpiryTime = 12 * 3600;
break;
case E_VALIDITY_PERIOD_1DAY:
message_send_p->uiExpiryTime = 1 * 24 * 3600;
break;
case E_VALIDITY_PERIOD_1WEEK:
message_send_p->uiExpiryTime = 1 * 7 * 24 * 3600;
break;
default:
if (wap_get_user_agent_brand() != EM_WAP_USERAGENT_BRAND_SE)
message_send_p->uiExpiryTime = MAX_VALIDITY_PERIOD_VALUE;
break;
}
switch (g_jmms_context->sending_settings.delivery_time){
case E_IMMEDIATE:
message_send_p->uiDeliveryTime = 0;
break;
case E_1_HR:
message_send_p->uiDeliveryTime = 3600;
break;
case E_12_HRS:
message_send_p->uiDeliveryTime = 12 * 3600;
break;
case E_24_HRS:
message_send_p->uiDeliveryTime = 24 * 3600;
break;
default:
message_send_p->uiDeliveryTime = 0;
break;
}
message_send_p->eMsgPriority = (g_jmms_context->sending_settings.priority);
if (g_jmms_context->sending_settings.reply_charging == E_ON){
message_send_p->pReplyChargingInfo = (REPLY_CHARGING*)jdd_MemAlloc(sizeof(REPLY_CHARGING), 1);
if (message_send_p->pReplyChargingInfo == NULL){
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
return JC_ERR_MEMORY_ALLOCATION;
}
switch (g_jmms_context->sending_settings.request_type){
case E_FULL_MMS:
message_send_p->pReplyChargingInfo->eReplyCharging = E_REQUEST_REPLY_CHARGING;
break;
case E_TEXT_ONLY:
message_send_p->pReplyChargingInfo->eReplyCharging = E_REQUEST_TEXT_ONLY_REPLY_CHARGING;
break;
default:
message_send_p->pReplyChargingInfo->eReplyCharging = E_REQUEST_REPLY_CHARGING;
break;
}
message_send_p->pReplyChargingInfo->uiRelativeTime =
(JC_UINT32) (gui_atoi((UI_string_type) g_jmms_context->sending_settings.deadline_for_reply_buffer) * 3600);
message_send_p->pReplyChargingInfo->uiSize =
((JC_UINT32) gui_atoi((UI_string_type) g_jmms_context->sending_settings.reply_msg_size_buffer)) * 1000;
}
/* Added by Deepali for reply charging. */
if (g_jmms_context->rc_info != NULL){
message_send_p->pReplyChargingInfo->pszReplyId =
(JC_INT8*) jdi_UtilsStrdup(g_jmms_context->rc_info->pReplyMsgID);
if (g_jmms_context->rc_info != NULL){
if (g_jmms_context->rc_info->pReplyMsgID != NULL)
jdd_MemFree(g_jmms_context->rc_info->pReplyMsgID);
jdd_MemFree(g_jmms_context->rc_info);
g_jmms_context->rc_info = NULL;
}
} message_send_p->bExpiryAbs = E_FALSE;
message_send_p->bDeliveryAbs = E_FALSE;
if (g_jmms_context->num_to_addresses > 0){
g_jmms_context->to_p = mmi_jmms_get_to_addresses();
if (g_jmms_context->to_p == NULL){
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
return JC_ERR_MEMORY_ALLOCATION;
}
message_send_p->pTo = (JC_CHAR*) g_jmms_context->to_p;
}
if (g_jmms_context->num_cc_addresses > 0){
g_jmms_context->cc_p = mmi_jmms_get_cc_addresses();
if (JC_OK != ret){
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
return JC_ERR_MEMORY_ALLOCATION;
}
message_send_p->pCc = (JC_CHAR*) g_jmms_context->cc_p;
}
if (g_jmms_context->num_bcc_addresses > 0){
g_jmms_context->bcc_p = mmi_jmms_get_bcc_addresses();
if (JC_OK != ret){
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
return JC_ERR_MEMORY_ALLOCATION;
}
message_send_p->pBcc = (JC_CHAR*) g_jmms_context->bcc_p;
}
len = pfnUnicodeStrlen((S8*) g_jmms_context->subject_input_buffer);
g_jmms_context->subject_p = (S8*) jdd_MemAlloc(sizeof(S8), (len + 1) * ENCODING_LENGTH); if ((g_jmms_context->subject_p == NULL) && (len != 0)){
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
return JC_ERR_MEMORY_ALLOCATION;
}
if (g_jmms_context->subject_p){
if (GetUCS2Flag((S8*) g_jmms_context->subject_input_buffer) == FALSE){
U8 count = 0;
U32 str_len = 0;
S8 temp[MAX_SUBJECT_LENGTH + 1];
UnicodeToAnsii(temp, (S8*) g_jmms_context->subject_input_buffer);
str_len = strlen(temp);
for (count = 0; count < (str_len); count++){
if (temp[count] == 0x0D && temp[count + 1] == 0x0A){
temp[count] = 0x20;
strcpy((S8*) (temp + count + 1), (S8*) (temp + count + 2));
str_len--;
}
}
AnsiiToUnicodeString(g_jmms_context->subject_p, temp);
} else {
pfnUnicodeStrcpy((S8*) g_jmms_context->subject_p, (S8*) g_jmms_context->subject_input_buffer);
}
message_send_p->pSubject = (JC_CHAR*) g_jmms_context->subject_p;
}
msg_headers_p->eMsgType = E_MSG_TYPE_SEND;
msg_headers_p->pHeaders = message_send_p;
if (is_create_for_send == MMI_TRUE){
g_jmms_context->progress_screen_title = STR_ID_PROGRESS_SENDING;
memset(g_jmms_context->g_jmms_progress_str, 0x00, MAX_PROGRESS_SCREEN_HINT_LEN * ENCODING_LENGTH);
mmi_jmms_insert_auto_signature();
ret_code = mmi_jmms_jdi_set_msg_headers(msg_handle, msg_headers_p);
if (JC_OK != ret_code){
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
return ret_code;
}
/* Register the function that to be execute after the completion of the
encapsulation */
mmi_jmms_add_send_callback_node(mmi_jmms_create_and_send_new_mms_async_callback);
mmi_jmms_send_mms(msg_handle, E_TYPE_NEW_MMS, E_TRUE, 1, E_TRUE
#ifdef __MMI_UNIFIED_COMPOSER__
, mmi_jmms_handle_screen_flow_callback
#endif /* __MMI_UNIFIED_COMPOSER__ */
);
} else {
ret_code = mmi_jmms_jdi_set_msg_headers(msg_handle, msg_headers_p);
if (JC_OK != ret_code){
mmi_jmms_free_mms_pdu_memory(g_jmms_context);
return ret_code;
}
}
return JC_OK;}/*
*送信MMSのMMSは、機能
*
*主な機能は、マルチメディアコンテンツを送信するように構成されている
*
からのシステムから*この関数は、ソースコード、もともとマルチメディアインタフェースの操作でいっぱい
*個々のメンバーは(住所、附属書など)のコードを抽出するためのGUIとは関係がない
*コードのデフォルト値で埋め関数で
*また、、しかし、システムのコードからもコードを送信する様々な機能
*コードのインターフェイス部分の削除、色を実際の伝送コードを抽出
*送られてきた手紙。
*
主な塗りつぶしの*メンバーが含まれます:
*添付ファイル添付ファイル
*
*は、マルチメディアコンテンツを整理し、デフォルトの形式でする関数を呼び出します。
*送信
*/
static void MyApp_send_mms()
{
JMMS_COMP_ERRCODE err_code = JMMS_COMP_OK;
ECreationMode create_mode;
U32 mms_size = 0;
U8 page_count = 0; /* 1 */
/* from : void mmi_jmms_entry_write_message(void) */
if (mmi_jmms_is_ready_without_store(1)){
return;
}
g_jmms_context->g_use_local_send_setings = 0;
g_jmms_context->store_context->current_folder_name = E_JMMS_WRITE_MMS;
mmi_jmms_init_msg_context_struct();
/* Filled mms sending settings structure either by using MMS PDU or NVRAM. */
mmi_jmms_fill_mms_sending_settings();
if (g_jmms_context->compose_context == NULL){
g_jmms_context->compose_context =
(mmi_jmms_compose_context_struct*)
jdd_MemAlloc(sizeof(mmi_jmms_compose_context_struct), 1);
if (g_jmms_context->compose_context == NULL){
DisplayPopup((PU8)GetString(STR_ID_JMMS_OUT_OF_MEMORY),
IMG_GLOBAL_ERROR, 1, JMMS_POPUP_TIME, ERROR_TONE);
return;
}
}
/ *いくつかのメンバー*を初期化/
if (JMMS_COMP_OK != mmi_jmms_compose_new_mms()){
/ *エラーが*取り扱い/
return;
} /* 2 */
/* from : void mmi_jmms_entry_write_message_screen(void) */
#ifdef __MMI_UNIFIED_MESSAGE__
mmi_jmms_jdi_deinitview(g_jmms_context->msg_handle);
#endif
if (g_jmms_context->compose_context == NULL){
g_jmms_context->compose_context =
(mmi_jmms_compose_context_struct*)
jdd_MemAlloc(sizeof(mmi_jmms_compose_context_struct), 1);
if (g_jmms_context->compose_context == NULL){
/ *エラーが*取り扱い/
DisplayPopup((PU8) GetString(STR_ID_JMMS_OUT_OF_MEMORY),
IMG_GLOBAL_ERROR, 1, JMMS_POPUP_TIME, ERROR_TONE);
return;
}
}
set_leading_zero(FALSE)は、/ *文は*に有用であることがされていることを確認/
g_jmms_context->is_add_media_as_drm = MMI_FALSE; /* 3 */
/* from: mmi_jmms_callback_filemgr_select_attachment() */
/ *は、コードを添付* /
if (g_jmms_context->compose_context->media_path_p != NULL){
jdd_MemFree(g_jmms_context->compose_context->media_path_p);
g_jmms_context->compose_context->media_path_p = NULL;
}
g_jmms_context->compose_context->media_path_p =
(S8*) jdd_MemAlloc((pfnUnicodeStrlen((S8 *)DEMO_TXT_FILE) + 1), sizeof(JC_CHAR));
if (g_jmms_context->compose_context->media_path_p == NULL){
/ *エラーが*取り扱い/
DisplayPopup((PU8)GetString(STR_ID_JMMS_OUT_OF_MEMORY),
IMG_GLOBAL_ERROR, 1, JMMS_POPUP_TIME, ERROR_TONE);
return;
}
pfnUnicodeStrcpy((S8*) g_jmms_context->compose_context->media_path_p, (S8*)DEMO_TXT_FILE);
//mms_content_insert_hdlr();
/ / Mmi_jmms_fm_add_attachment(); / /の附属書にファイルを追加する
err_code = mmi_jmms_compose_add_media(g_jmms_context->compose_context->media_path_p,
E_MEDIA_OTHERS, E_TRUE, 0);
jdd_MemFree(g_jmms_context->compose_context->media_path_p);
g_jmms_context->compose_context->media_path_p = NULL; /* 4 */
/ *受信者のアドレス*に追加する/
g_jmms_context->address_list_flag = E_TO_ADDRESSES;
g_jmms_context->num_to_addresses = 0;
/ *に対処するために、関連する変数*に対処する追加/
mmi_jmms_add_address_in_addresse_list((S8 *)L"159xxxxxxxx"); /* 5 */
/ *は、サブジェクトのテーマを追加* /
/ * Subject_input_bufferが配列している* /
pfnUnicodeStrcpy((S8*)g_jmms_context->subject_input_buffer, (S8*)MMS_SUBJECT);
/ / memcpyを(g_jmms_context -> subject_input_bufferは、L"データ"、4);処理のために/ *関数*を送信呼び出す前に/
g_jmms_context -> nvram_compose_settings.creation_modeは= E_CREAT_MODE_FREE / /以前の治療かどうかを/ * 6 *を知らない/
/ * *を送信/
/ *操作コード*をインタフェースにも関連している/
//mmi_jmms_entry_write_mms_done_send_only();
/*
※ただし、関数はGUIコードが求められているので、ここの中の内容を見る
*果皮、次のコード
*/
create_mode = mmi_jmms_compose_settings_creation_mode();
#1 / / zhs場合:create_mode異なるスラスラ
if (create_mode == E_CREATION_MODE_RESTRICTED){
mmi_jmms_jdi_get_size(g_jmms_context->msg_handle, 0, &mms_size);
if (mms_size > MMS_SUPPORTED_CONTENT_CLASS_MAX_SIZE_RESTRICTED_MODE){
DisplayPopup(
(U8*) GetString(STR_ID_JMMS_MODE_MAX_MSG_SIZE_REACHED_NEED_DELETE),
IMG_GLOBAL_WARNING,
1,
JMMS_POPUP_TIME,
WARNING_TONE);
DeleteUptoScrID(SCR_ID_JMMS_WRITE_MMS);
return;
}
if (IsMMSRestrictedMode(g_jmms_context->msg_handle, MMS_SUPPORTED_CONTENT_CLASS) != JC_OK){
mmi_jmms_edit_content_restricted_mode_query();
return;
}
}
#endif
g_jmms_context->save_mms = MMI_FALSE;
/* /don't change the order of following 2 steps */
g_jmms_context -> last_scr_id = SCR_ID_JMMS_WRITE_MMSは、/ / zhs:GUIは関係があるかもしれない
mmi_jmms_free_message_header();
mmi_jmms_jdi_get_total_pages(g_jmms_context->msg_handle, &page_count);
if (page_count == 0 && mmi_jmms_compose_settings_auto_sign_status() == E_OFF){
err_code = JMMS_COMP_OK;
/*
DisplayPopupCallBack(
(U8の*)GetStringメソッド(STR_ID_JMMS_ADD_BLANK_SLIDE)、/ /"空白MMSの1つのスライドを挿入する!""空のメッセージを挿入する.."
IMG_GLOBAL_WARNING,
1,
JMMS_POPUP_TIME,
(U8) WARNING_TONE,
mmi_jmms_add_blank_slide_before_send_callback);
*/
g_jmms_context->compose_context->curr_page_index = 0;
g_jmms_context->compose_context->mms_bg_color = 0xFFFFFF64;//g_jmms_color_RGB_list[COLOR_WHITE];
err_code = mmi_jmms_set_bg_color(g_jmms_context->compose_context->mms_bg_color);
if (JMMS_COMP_OK == err_code){
#ifdef MMI_ON_HARDWARE_P
stFontAttribute text_font;
text_font.italic = 0;
text_font.bold = 0;
text_font.size = MEDIUM_FONT;
#endif /* MMI_ON_HARDWARE_P */
mmi_jmms_compose_insert_slide();
#ifdef MMI_ON_HARDWARE_P
if (is_test_sim() == MMI_FALSE){
pfnUnicodeStrcpy((S8*) g_jmms_context->compose_context->curr_slide_info.edit_content_buffer,
する(S8 *)GetStringメソッド(STR_ID_JMMS_BLANK_SLIDE_STRING)); / /"空白のMMS"
if (!(create_mode == E_CREATION_MODE_RESTRICTED &&
mms_size +
jc_tcslen((UI_character_type*) g_jmms_context->compose_context->curr_slide_info.
edit_content_buffer) * sizeof(JC_CHAR) >
MMS_SUPPORTED_CONTENT_CLASS_MAX_SIZE_RESTRICTED_MODE)){
g_jmms_context->disable_warning_popup = 1;
mmi_jmms_compose_add_text(
(U8) (page_count + 1),
&(text_font),
0x,//g_jmms_color_RGB_list[COLOR_BLACK],
1);
g_jmms_context->disable_warning_popup = 0;
}
}
#endif /* MMI_ON_HARDWARE_P */
}
}
/* 7 */
/ / MMSを送信
MyApp_jmms_create_and_send_new_mms(E_USE_NVRAM_SETTINGS, g_jmms_context, MMI_TRUE);}