📄 mmisimtoolkit.c
字号:
display_info.Callback = NULL;
display_info.Time = THREE_SECS;
display_info.KeyEvents = KEY_LEFT|KEY_RIGHT|KEY_HUP;
display_info.iconindex=REMIND_COMPLETE;
/*
* Call Info Screen
*/
info_dialog (win, &display_info);
}
break;
default:
TRACE_EVENT("sim_toolkit_exec() unexp. event");
break;
}
}
/*******************************************************************************
$Function: sim_toolkit_sat_cb
$Description: Callback function for SAT handler of top window
$Returns: none.
$Arguments:
*******************************************************************************/
static int sim_toolkit_sat_cb ( T_MFW_EVENT event, T_MFW_SAT * sat_bits)
{
USHORT sat_event;
TRACE_EVENT("sim_toolkit_sat_cb");
/*
* check whether a decoded message is available
*/
if ((sat_bits EQ NULL) || (g_sim_toolkit_data->win EQ NULL))
{
TRACE_EVENT("sim_toolkit_sat_cb() unexp. event");
return MFW_EVENT_CONSUMED;
}
/* convert the flag into an event */
if (event == MfwSatSessionEnd)
{
sat_event = SAT_SESSION_END;
}
else
{
switch (event)
{
case MfwSatTextOut: /* display string */
sat_event = SAT_DISPLAY_TEXT;
break;
case MfwSatGetKey: /* get user keystroke */
sat_event = SAT_GET_KEY;
break;
case MfwSatGetString: /* get user input */
sat_event = SAT_GET_STRING;
break;
case MfwSatPlayTone: /* play audio tone */
sat_event = SAT_PLAY_TONE;
break;
case MfwSatSetupMenu: /* setup toolkit menu */
sat_event = SAT_SETUP_MENU;
break;
case MfwSatSelectItem: /* select menu item */
sat_event = SAT_SELECT_ITEM;
break;
case MfwSatSendSMS: /* send short message */
sat_event = SAT_SEND_SMS;
break;
case MfwSatSendUSSD: /* Robert.Chen add, 2004-02-28, imported from TCS2112 release */
case MfwSatSendSS: /* send service command */
sat_event = SAT_SEND_SS;
break;
case MfwSatCall: /* setup a call */
sat_event = SAT_SETUP_CALL;
break;
case MfwSatCcRes: /* call control result */
sat_event = SAT_CALL_RESULT;
break;
case MfwSatCcAlert: /* call control alerting */
sat_event = SAT_CALL_ALERT;
break;
case MfwSatRefresh: /* refresh SIM fields */
sat_event = SAT_REFRESH;
break;
case MfwSatSetEvents: /* Sat Set Events updated */
sat_event = SAT_SET_EVENTS;
break;
case MfwSatDataRefreshed: /* Data refreshed */
TRACE_EVENT("MfwSatDataRefreshed event sent");
break;
/* Robert.Chen added, 2004-02-28, imported from TCS2112 release */
case MfwSatOpenChannel: /* Open channel */
sat_event = SAT_OPEN_CHANNEL;
break;
case MfwSatCloseChannel: /* Close channel */
sat_event = SAT_CLOSE_CHANNEL;
break;
case MfwSatSendData: /* Send data */
sat_event = SAT_SEND_DATA;
break;
case MfwSatReceiveData: /* Receive data */
sat_event = SAT_RECEIVE_DATA;
break;
/* add end */
#ifdef MMI_WAP_ENABLED /*Disable for testing without WAP*/
case MfwSatLaunchBrowser:
TRACE_EVENT("SAT_LAUNCH_BROWSER got to MMI");
#ifdef MMI_TEST_SAT_LAUNCH_BROWSER
{
#define LENGTH_URL 40
T_SAT_RES sat_res;
SatLaunchBrowser laun_brow;
char prov_url[LENGTH_URL];
short pos = 0;
int i;
sat_res[SAT_ERR_INDEX] = SAT_RES_SUCCESS;
sat_res[SAT_AI_INDEX] = SatResAiNoCause;
sat_done (sat_bits->cmd, sat_res, sizeof(T_SAT_RES));
sat_event = SAT_LAUNCH_BROWSER;
laun_brow = sat_bits->cmd->c.browser;
memset(information,'\0',INFORMATION_SIZE);
TRACE_EVENT_P1("Browser identity -> %d",laun_brow.identity);
memcpy(&prov_url,laun_brow.url,LENGTH_URL);
prov_url[LENGTH_URL-1] = '\0';
TRACE_EVENT_P1("Browser url -> %s",prov_url);
pos += sprintf(information+pos,
"BROWSER\n-Identity=%d\n-Url=%s\n-Bearers(%d)=",
laun_brow.identity,
prov_url,
laun_brow.n_bearer);
for (i=0;i<5;i++)
pos+=sprintf(information+pos," %d",*laun_brow.bearer++);
mmiOpenDummyBrowser(g_sim_toolkit_data->win,information);
}
break;
#endif /*WAP*/
#endif /* MMI_TEST_SAT_LAUNCH_BROWSER */
//glowing,2005-05-25, add _M188_ for compatible with M288B( rita project)
#ifdef _M188_
case MfwSatSimBusy:
#else
case MfwSatErrBusy:
#endif
/*zy 2003-04-16 checkin SPR#1779 - DS - SIM has returned busy (SW1=0x93) */
sat_event = SAT_SIM_BUSY;
break;
default:
sat_event = SAT_UNKNOWN;
break;
}
}
SEND_EVENT (g_sim_toolkit_data->win, sat_event, 0, sat_bits->cmd);
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: sat_setup_menu_proc
$Description: process SAT_SETUP_MENU event
$Returns: none.
$Arguments:
*******************************************************************************/
static void sat_setup_menu_proc(T_SAT_CMD * sat_command)
{
UBYTE header_len;
TRACE_FUNCTION("sat_setup_menu_proc");
if (sat_command->c.menu.items[0].len EQ 0)
{
/*
* "Item data object for item 1" is a null data object:
* hide the SIM toolkit menu item in the main menu
*/
menuDisableSimMenu();
g_sim_toolkit_data->sat_available_on_SIM = FALSE;
//release the labe of the mainmenu
//GW-SPR#1035 Free memory using sat_destroy_TEXT_ASCIIZ (as it is allocated using corresponding procedure)
if (sat_mainmenu_label NEQ NULL)
{
sat_destroy_TEXT_ASCIIZ (sat_mainmenu_label);
sat_mainmenu_label = NULL;
}
if (sat_get_setup_menu_win() NEQ NULL)
{
/* there's an active SETUP MENU */
SEND_EVENT (sat_get_setup_menu_win(), SAT_EXIT, 0, NULL); /* SETUP_MENU shall selfdestroy */
}
if (g_sim_toolkit_data->sat_setup_menu_command NEQ NULL)
{
FREE_MEMORY ((U8 *)(g_sim_toolkit_data->sat_setup_menu_command), sizeof (T_SAT_CMD));
g_sim_toolkit_data->sat_setup_menu_command = NULL;
}
}
else
{
/* install new setup menu */
if (sat_get_setup_menu_win() NEQ NULL)
{
TRACE_EVENT("2SETUP_MENU shall selfdestroy");
/* there's already an active SETUP MENU */
if(g_SATsession_is_active) //zhaowm 2003 03.14 for avoiding memory leak
{
return;
}
else
SEND_EVENT (sat_get_setup_menu_win(), SAT_EXIT, 0, NULL); /* SETUP_MENU shall selfdestroy */
//sat_destroy_TEXT_UCODE(g_sim_toolkit_data->sat_setup_menu_label);
}
/* store command contents for later use in sat_setup_menu_start() */
if (g_sim_toolkit_data->sat_setup_menu_command EQ NULL)
{
/* if not already allocated, get storage for the SETUP MENU command */
g_sim_toolkit_data->sat_setup_menu_command =
(T_SAT_CMD *)ALLOC_MEMORY (sizeof (T_SAT_CMD));
}
*(g_sim_toolkit_data->sat_setup_menu_command) = *sat_command; /* copy contents */
/*
The label for the main menu
*/
//GW-SPR#1035-Corrected code to read label out
{
/* taking the label from menu command file and convert to ascii */
//GW Memory is allocated 'sat_create_TEXT_ASCIIZ'
// sat_mainmenu_label = (char *)ALLOC_MEMORY (header_len);
/* Robert.Chen added, 2004-02-28, imported from TCS2112 */
#ifdef NO_ASCIIZ
/*MC, SPR 940/2if we're in chinese, header may be converted from ASCII to Unicode*/
if (Mmi_getCurrentLanguage() == CHINESE_LANGUAGE)
header_len = g_sim_toolkit_data->sat_setup_menu_command->c.menu.header.len *2;
else
#endif
/* taking the label from menu command file and convert to ascii */
header_len = g_sim_toolkit_data->sat_setup_menu_command->c.menu.header.len;
sat_mainmenu_label = sat_create_TEXT_ASCIIZ (&g_sim_toolkit_data->sat_setup_menu_command->c.menu.header);
/* Robert.Chen added, 2004-02-28, improted from TCS2112 */
sat_mainmenu_label[header_len] = '\0';
LanguageIndex_1[TxtSimToolkit].Text = sat_mainmenu_label;
//#ifndef CHINESE_MMI
LanguageIndex_2[TxtSimToolkit].Text = sat_mainmenu_label;
//#else
//We need to define the chinese output and test for Asciii/ Unicode data
//#endif
}
/* unhide the SIM toolkit menu item in the main menu */
menuEnableSimMenu
(
"", /* label */
(SimMenuFunc)sat_setup_menu_start, /* callback when menu entered */
g_sim_toolkit_data->sat_setup_menu_command /* parameter to callback */
);
}
sat_set_setup_menu_win(NULL); // avoid notifications to a non-existent window
}
/*******************************************************************************
$Function: sat_win_cb
$Description: Default sat window event handler. Avoid intermediate visibility of lower menus
$Returns: none.
$Arguments:
*******************************************************************************/
int sat_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
// T_DISPLAY_DATA display_info; /*2003/12/4, wangyan add*/
TRACE_FUNCTION("sat_win_cb");
if (win EQ NULL)
return MFW_EVENT_CONSUMED;
switch (event)
{
case E_WIN_VISIBLE: /* window changed visibility */
if (win->flags & E_WIN_VISIBLE)
{
/* window becomes visible */
// dspl_ClearAll();
draw_popup_background();
#if(MAIN_LCD_SIZE==4)
ALIGNED_PROMPT(CENTER,DIALOG_SECOND_LINE,DSPL_TXTATTR_TRANSPARENT,TxtPleaseWait);
#elif(MAIN_LCD_SIZE==3)
ALIGNED_PROMPT(CENTER_RIGHT,DIALOG_HALF_FIRSTSECOND,DSPL_TXTATTR_TRANSPARENT,TxtPleaseWait);
#endif
// dspl_TextOut(32,18,DSPL_TXTATTR_NORMAL,GET_TEXT(TxtPleaseWait));
/*
dialog_info_init(&display_info);
display_info.KeyEvents = KEY_CLEAR | KEY_RIGHT;
display_info.TextId2 = 0;
display_info.TextId = TxtPleaseWait;
display_info.TextString = 0;
display_info.TextString2 = 0;
display_info.LeftSoftKey = '\0';
display_info.RightSoftKey = TxtSoftBack;
display_info.Time = ONE_SECS;
display_info.iconindex=REMIND_COMPLETE;
info_dialog (win, &display_info);
*/
}
break;
default:
return MFW_EVENT_REJECTED;
}
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: sat_kbd_cb
$Description: Default sat window keyboard handler
$Returns: none.
$Arguments:
*******************************************************************************/
int sat_kbd_cb (T_MFW_EVENT event, T_MFW_KBD * key)
{
T_MFW_HND win = mfwParent( mfw_header() );
TRACE_FUNCTION("sat_kbd_cb");
/* make sure we handle null keyboards
*/
if ( key == NULL )
return MFW_EVENT_CONSUMED;
/* deal with the incoming key code
*/
switch( key->code )
{
/* Destroy the window on either right softkey or hangup keypresses */
case KCD_HUP:
case KCD_RIGHT:
{
/* 2004/07/12 sunsj remove for close key action at simtoolkit action */
//SEND_EVENT(win, SAT_DESTROY_WINDOW, 0, 0);
break;
}
}
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: sat_info_cb
$Description: Callback function information dialog.
$Returns: none.
$Arguments:
*******************************************************************************/
static void sat_info_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -