📄 mmismssend.c
字号:
if (data->child_dialog != NULL)
{
TRACE_EVENT("child_dialog not deleted?");
}
if (data->text_editor != NULL)
{
TRACE_EVENT("current_editor not deleted?");
}
// Delete WIN handler
win_delete (data->win);
// Free Memory
FREE_MEMORY ((void *)data, sizeof (T_SEND));
//win_data->user = NULL;
}
else
{
TRACE_EVENT ("SmsSend_SEND_destroy() called twice");
}
}
}
/*******************************************************************************
$Function: SmsSend_main_exec_cb
$Description: Main callback handler for events sent to to trigger execution
$Returns: none
$Arguments: win - current window
event - event id
identifier - unique id
parameter - optional data.
*******************************************************************************/
static void SmsSend_main_exec_cb (T_MFW_HND win, USHORT event, SHORT identifier, void * parameter)
{
TRACE_FUNCTION ("SmsSend_main_exec_cb()");
/* In this field we get the identifier of the window sending the event */
switch (identifier)
{
case SEND_ID:
case SAVE_ID: // events from the SAVE window are also managed in the SEND callback
case SMSSEND_ID_SAVE_NOT_READY:
SmsSend_SEND_exec_cb(win, event, parameter);
break;
case PHBK_ID:
SmsSend_PHBK_exec_cb(win, event, parameter);
break;
case SMSSEND_ID_TEXTEDIT:
SmsSend_TEXTEDIT_exec_cb(win, event, parameter);
break;
case SMSSEND_ID_NBEDIT:
case SMSSEND_ID_SC_NOT_READY:
SmsSend_NBEDIT_exec_cb(win, event, parameter);
break;
case SMSSEND_ID_CENTREEDIT:
SmsSend_CENTREEDIT_exec_cb(win, event, parameter);
break;
default:
TRACE_EVENT("Err: Default");
break;
}
}
/*******************************************************************************
$Function: SmsSend_SEND_exec_cb
$Description: Callback handler for events sent by the window itself
$Returns: none
$Arguments: win - current window
event - event id
parameter - optional data.
*******************************************************************************/
static void SmsSend_SEND_exec_cb(T_MFW_HND win, USHORT event, void *parameter)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
T_SEND * data = (T_SEND *)win_data->user;
T_MFW_SMS_INFO sms_parameter;
T_MFW_EVENT MfwEvents;
T_DISPLAY_DATA display_info;
/* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
T_AUI_EDITOR_DATA editor_data;
USHORT size;
#else /* NEW_EDITOR */
T_EDITOR_DATA editor_data;
#endif /* NEW_EDITOR */
TRACE_FUNCTION ("SmsSend_SEND_exec_cb()");
switch (event)
{
case E_INIT:
/* Create a sms handler to receive events */
MfwEvents = E_SMS_ERR | E_SMS_MO_AVAIL;
data->sms_handler = sms_create(data->win,MfwEvents,(MfwCb)SmsSend_SEND_mfw_cb);
data->child_dialog = NULL;
/* store NUMBER and TEXT */
memcpy(&(data->edt_data), (T_SmsUserData *)parameter, sizeof(T_SmsUserData));
/* in case of reply the sms we have to
use the service center number from the
caller
*/
if (data->edt_data.called_from_reply_item EQ FALSE)
{
// The SMS center is initialized to '\0'
data->edt_data.CentreBuffer[0] = '\0';
}
/* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
#if defined(CHINESE_MMI) && defined(EASY_TEXT_ENABLED)
/* If chinese is selected and we're opening up a new message
* or a unicode message, use the chinese editor */
if (Mmi_getCurrentLanguage() == CHINESE_LANGUAGE
&& (data->edt_data.TextBuffer[0]==0x00 || data->edt_data.TextBuffer[0] ==0x80))
{
T_CHINESE_DATA chinese_data;
chinese_data.TextString = (char*) data->edt_data.TextBuffer;
chinese_data.TextString[0] = 0x80;
chinese_data.TextString[1] = MAX_MSG_LEN;
chinese_data.Callback = (T_AUI_EDIT_CB)SmsSend_TEXTEDIT_edit_cb;
chinese_data.Identifier = SMSSEND_ID_TEXTEDIT ;
chinese_data.LeftSoftKey = TxtSoftOptions;
chinese_data.DestroyEditor = FALSE;
if(FFS_flashData.ConcatenateStatus == TRUE)
chinese_data.EditorSize = (USHORT)((MAX_MSG_LEN_CHI)/2 - 1);
else
chinese_data.EditorSize = (USHORT)((MAX_MSG_LEN_SGL_CHI)/2 - 1);
data->text_editor = chinese_input(win, &chinese_data);
}
else
#endif /* CHINESE_MMI && EASY_TEXT_ENABLED */
/* We're opening up an ascii or unicode latin editor */
{
AUI_edit_SetDefault(&editor_data);
/* Set the appropriate mode if easy text is enabled */
#ifdef EASY_TEXT_ENABLED
AUI_edit_SetMode(&editor_data, ED_MODE_ALPHA | ED_MODE_PREDTEXT, ED_CURSOR_BAR);
#else /* EASY_TEXT_ENABLED */
AUI_edit_SetMode(&editor_data, ED_MODE_ALPHA, ED_CURSOR_BAR);
#endif /* EASY_TEXT_ENABLED */
/* Check if concatenated SMS is enabled */
if(FFS_flashData.ConcatenateStatus == TRUE)
size = MAX_MSG_LEN;
else
size = MAX_MSG_LEN_SGL;
/* Set the DCS type of the message */
if (data->edt_data.TextBuffer[0]==0x80)
{
TRACE_EVENT("Unicode SMS message starting 0x80");
AUI_edit_SetBuffer(&editor_data, ATB_DCS_UNICODE, &data->edt_data.TextBuffer[2], size/2);
}
else
{
TRACE_EVENT("Normal SMS message");
AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, data->edt_data.TextBuffer, size);
}
AUI_edit_SetDisplay(&editor_data, ZONE_FULL_SK_TITLE_SCROLL, COLOUR_EDITOR, EDITOR_FONT);
AUI_edit_SetEvents(&editor_data, SMSSEND_ID_TEXTEDIT, FALSE, FOREVER, (T_AUI_EDIT_CB)SmsSend_TEXTEDIT_edit_cb);
AUI_edit_SetTextStr(&editor_data, TxtSoftOptions, TxtDelete, NULL, NULL);
AUI_edit_SetAltTextStr(&editor_data, 0, NULL, TRUE, TxtSoftBack);
data->text_editor = AUI_edit_Start(win,&editor_data); /* start the editor */
}
#else /* NEW_EDITOR */
/* END OF NEW EDITOR CODE */
/*SPR 1434*/
#if defined(CHINESE_MMI) && defined(EASY_TEXT_ENABLED)
/*MC SPR1242, merged section in from b-sample build*/
if (Mmi_getCurrentLanguage() == CHINESE_LANGUAGE)
{ T_CHINESE_DATA chinese_data;
chinese_data.TextString = (char*) data->edt_data.TextBuffer;
/*if empty or unicode string, add unicode tag*/
if(chinese_data.TextString[0] ==0x00 || chinese_data.TextString[0] ==0x80)
{ chinese_data.TextString[0] = 0x80;
chinese_data.TextString[1] = MAX_MSG_LEN;
chinese_data.Callback = (T_EDIT_CB)SmsSend_TEXTEDIT_edit_cb;
chinese_data.Identifier = SMSSEND_ID_TEXTEDIT ;
chinese_data.LeftSoftKey = TxtSoftOptions;
chinese_data.DestroyEditor = FALSE;
if(FFS_flashData.ConcatenateStatus == TRUE)
chinese_data.EditorSize = (USHORT)((MAX_MSG_LEN_CHI)/2 - 1);
else
chinese_data.EditorSize = (USHORT)((MAX_MSG_LEN_SGL_CHI)/2 - 1);
data->text_editor = chinese_input(win, &chinese_data);
}
else/*if ascii string use ASCII editor rather than converting to unicode, MC, SPR 1292*/
{ SmsSend_loadEditDefault(&editor_data);
editor_data.editor_attr.text = (char *)data->edt_data.TextBuffer;
//1227 - API - 05/10/02 - Size of Editor dependent on whether Conc_Switch is TRUE or FALSE
if(FFS_flashData.ConcatenateStatus == TRUE)
editor_data.editor_attr.size = MAX_MSG_LEN;
else
editor_data.editor_attr.size = MAX_MSG_LEN_SGL;
editor_data.min_enter = 0;
editor_data.LeftSoftKey = TxtSoftOptions;
editor_data.AlternateLeftSoftKey = TxtSoftOptions;
editor_data.RightSoftKey = TxtDelete;
editor_data.Identifier = SMSSEND_ID_TEXTEDIT ;
editor_data.Callback = (T_EDIT_CB)SmsSend_TEXTEDIT_edit_cb;
editor_data.destroyEditor = FALSE;
data->text_editor = editor_start(win,&editor_data); /* start the editor */
}
}
else
#endif /* CHINESE_MMI && EASY_TEXT_ENABLED */
{
#ifdef EASY_TEXT_ENABLED
editor_data.hide = FALSE;
editor_data.TextId = '\0';
editor_data.Identifier = 0;
editor_data.TextString = NULL;
editor_data.timeout = FOREVER; // Avoid to return empty strings
editor_data.mode = ALPHA_MODE;
editor_attr_init_pred(&editor_data.editor_attr, ZONE_FULL_SK_TITLE, edtCurBar1, NULL, (char *)data->edt_data.TextBuffer, MAX_MSG_LEN, COLOUR_EDITOR);
#else /* EASY_TEXT_ENABLED */
SmsSend_loadEditDefault(&editor_data);
editor_attr_init(&editor_data.editor_attr, ZONE_FULL_SK_TITLE, edtCurBar1, NULL, (char *)data->edt_data.TextBuffer, MAX_MSG_LEN, COLOUR_EDITOR);
#endif /* EASY_TEXT_ENABLED */
editor_data.editor_attr.text = (char *)data->edt_data.TextBuffer;
//1227 - API - 05/10/02 - Size of Editor dependent on whether Conc_Switch is TRUE or FALSE
if(FFS_flashData.ConcatenateStatus == TRUE)
editor_data.editor_attr.size = MAX_MSG_LEN;
else
editor_data.editor_attr.size = MAX_MSG_LEN_SGL;
editor_data.min_enter = 0;
editor_data.LeftSoftKey = TxtSoftOptions;
editor_data.AlternateLeftSoftKey = TxtSoftOptions;
editor_data.RightSoftKey = TxtDelete;
editor_data.Identifier = SMSSEND_ID_TEXTEDIT ;
editor_data.Callback = (T_EDIT_CB)SmsSend_TEXTEDIT_edit_cb;
editor_data.destroyEditor = FALSE;
data->text_editor = editor_start(win,&editor_data); /* start the editor */
}
#endif /* NEW_EDITOR */
break;
case E_RETURN:
break;
case E_EXIT:
if(data->sc_number_editor != NULL)
{
//GW Read config data - then set dcs parameter
SmsSend_get_config_data(&sms_parameter);
if (Mmi_getCurrentLanguage() == CHINESE_LANGUAGE)
{ //We have a chinese text message - set dcs parameter to
sms_parameter.dcs = MFW_DCS_UCS2;
}
else
{
sms_parameter.dcs = MFW_DCS_7bits;
}
// copy the SC number into the sms_parameter variable.
strcpy((char*)sms_parameter.sc_addr,(char*)data->edt_data.CentreBuffer);
// store the Service center number into the SIM.
SmsSend_set_SrvCntr_number (&sms_parameter);
SmsSend_set_dcs_number (&sms_parameter);
/* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
AUI_edit_Destroy(data->sc_number_editor);
#else /* NEW_EDITOR */
editor_destroy(data->sc_number_editor);
#endif /* NEW_EDITOR */
data->sc_number_editor = NULL;
}
break;
default:
TRACE_EVENT("Err: Default");
break;
}
}
/*******************************************************************************
$Function: SmsSend_PHBK_exec_cb
$Description: Callback handler for events sent by the phonebook window
$Returns: none
$Arguments: win - current window
event - event id
parameter - optional data.
*******************************************************************************/
static void SmsSend_PHBK_exec_cb(T_MFW_HND win, USHORT event, void *parameter)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
T_SEND * data = (T_SEND *)win_data->user;
/* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
T_ATB_TEXT text; /* Used to insert phone numbers into editors */
#endif
TRACE_FUNCTION ("SmsSend_PHBK_exec_cb()");
switch (event)
{
/* SPR#1428 - SH - New Editor changes. Insert phone number into editor */
#ifdef NEW_EDITOR
case SMS_PHBK_NUMBER: /* Normal phone number */
case SMSSC_PHBK_NUMBER: /* Service centre number */
text.dcs = ATB_DCS_ASCII;
text.len = strlen((char *)parameter);
text.data = (UBYTE *)parameter;
SEND_EVENT(data->number_editor, E_ED_INSERT, 0, (void *)&text);
break;
#else /* NEW_EDITOR */
case SMS_PHBK_NUMBER:
memcpy(data->edt_data.NumberBuffer, (char *)parameter, MINIMUM(sizeof(data->edt_data.NumberBuffer) - 1, strlen((char *)parameter)+1));
break;
/* SPR#1428 - SH - Insert service centre number into editor */
case SMSSC_PHBK_NUMBER:
memcpy(data->edt_data.CentreBuffer, (char *)parameter, MINIMUM(sizeof(data->edt_data.CentreBuffer) - 1, strlen((char *)parameter)+1));
#endif /* NEW_EDITOR */
break;
default:
TRACE_EVENT("Err: Default");
break;
}
}
/*******************************************************************************
$Function: SmsSend_TEXTEDIT_exec_cb
$Description: Callback handler for events sent by the TEXTEDIT editor
$Returns: none
$Arguments: win - current window
event - event id
parameter - optional data.
*******************************************************************************/
static void SmsSend_TEXTEDIT_exec_cb(T_MFW_HND win, USHORT event, void *parameter)
{
TRACE_FUNCTION ("SmsSend_TEXTEDIT_exec_cb()");
switch (event)
{
case E_RETURN:
// Destroy itself
SmsSend_SEND_destroy(win);
break;
default:
TRACE_EVENT("Err: Default");
break;
}
}
/*******************************************************************************
$Function: SmsSend_NBEDIT_exec_cb
$Description: Callback handler for events sent by the NBEDIT editor
$Returns: none
$Arguments: win - current window
event - event id
parameter - optional data.
*******************************************************************************/
static void SmsSend_NBEDIT_exec_cb(T_MFW_HND win, USHORT event, void *parameter)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
T_SEND * data = (T_SEND *)win_data->user;
T_MFW_SMS_INFO sms_parameter;
#ifdef NEW_EDITOR
T_AUI_EDITOR_DATA editor_data; /* SPR#1428 - SH - New Editor data */
#else
T_EDITOR_DATA editor_data;
#endif
TRACE_FUNCTION ("SmsSend_NBEDIT_exec_cb()");
switch (event)
{
case E_INIT:
if ((phb_get_mode() EQ PHB_RESTRICTED)
&& (phb_check_number(data->edt_data.NumberBuffer) EQ MFW_PHB_FAIL))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -