📄 mmiservices.c
字号:
SEND_EVENT(data->ussd_name_win, DIALOG_DESTROY, 0, 0);
data->ussd_name_win=0;
}
if( data->ussd_num_win )
{
SEND_EVENT(data->ussd_num_win, DIALOG_DESTROY, 0, 0);
data->ussd_num_win=0;
}
if( data->input_number_win )
{
TRACE_FUNCTION("killing input number win");
services_input_destroy( data->input_number_win );
data->input_number_win=0;
}
}
}
/*******************************************************************************
$Function: services_win_cb
$Description:
$Returns:
$Arguments:
*******************************************************************************/
static int services_win_cb(T_MFW_EVENT e, T_MFW_SS_PARA * para)
{
/*
* Top Window has no output
*/
TRACE_FUNCTION ("services_win_cb()");
switch( e )
{
case MfwWinVisible:
break;
default:
return 0;
}
return 1;
}
/*******************************************************************************
$Function: destroyInfoWindow
$Description:
$Returns:
$Arguments:
*******************************************************************************/
static void destroyInfoWindow( void)
{
// TRACE_FUNCTION("destroyInfoWindow");
/* kill info win if there */
if( ss_data.info_wait )
{
TRACE_EVENT("destroying the wait screen a");
SEND_EVENT(ss_data.info_wait, DIALOG_DESTROY, 0, 0);
ss_data.info_wait = 0;
}
if( ss_data.input_number_win )
{
TRACE_FUNCTION("destroying input window!!!");
SEND_EVENT(ss_data.input_number_win, SERVICES_INPUT_DESTROY, 0, 0);
ss_data.input_number_win = 0;
}
}
/*******************************************************************************
$Function: services_ss_cb
$Description:
$Returns:
$Arguments:
*******************************************************************************/
static int services_ss_cb(T_MFW_EVENT e, T_MFW_HND para)
{
TRACE_FUNCTION ("services_ss_cb()");
{
char buf[40];
T_MFW_WIN * win;
// sprintf (buf, "event = %d", e);
// TRACE_EVENT (buf);
win = (T_MFW_WIN *) ((T_MFW_HDR *)ss_data.win)->data;
// sprintf (buf, "win->user = %d", win->user);
// TRACE_FUNCTION (buf);
}
switch( e )
{
case E_SS_RES:
if( !ss_data.info_wait )
{
TRACE_EVENT ("show the wait screen");
// showWait( ss_data.win ); //WUFEI Disabled it 0710
showCFanimation( ss_data.win);// animation test 0710 wufei
}
/*
* ignore the event
*/
break;
case E_SS_NOTIFY:
if( !ss_data.info_win )
SEND_EVENT(ss_data.win,E_SS_NOTIFY,0, para);
destroyInfoWindow();
break;
case E_SS_CF_CNF:
if( !ss_data.info_win )
SEND_EVENT(ss_data.win,E_SS_CF_CNF,0, para);
destroyInfoWindow();
break;
case E_SS_CW_CNF:
if( !ss_data.info_win )
SEND_EVENT(ss_data.win,E_SS_CW_CNF,0, para);
destroyInfoWindow();
break;
case E_SS_CLI_CNF:
if( !ss_data.info_win )
SEND_EVENT(ss_data.win,E_SS_CLI_CNF,0, para);
destroyInfoWindow();
break;
case E_SS_CB_CNF:
// {
// char buf[40];
// T_MFW_WIN * win;
// sprintf (buf, "event = %d", e);
// TRACE_FUNCTION (buf);
// win = ((T_MFW_HDR *)ss_data.win)->data;
// sprintf (buf, "win->user = %d", win->user);
// TRACE_FUNCTION (buf);
// }
// {
// char buf[40];
// T_MFW_WIN * win;
// sprintf (buf, "event = %d", e);
// TRACE_FUNCTION (buf);
// win = ((T_MFW_HDR *)ss_data.win)->data;
// sprintf (buf, "win->user = %d", win->user);
// TRACE_FUNCTION (buf);
// }
if( !ss_data.info_win )
SEND_EVENT(ss_data.win,E_SS_CB_CNF,0, para);
destroyInfoWindow();
break;
/* we must display the ussd info and then edit and send a user ussd */
case E_SS_USSD_REQ:
if( !ss_data.info_win )
SEND_EVENT(ss_data.win,E_SS_USSD_REQ,0, para);
destroyInfoWindow();
break;
/* just display the ussd info */
case E_SS_USSD_CNF:
if( !ss_data.info_win )
SEND_EVENT(ss_data.win,E_SS_USSD_CNF,0, para);
destroyInfoWindow();
break;
case E_SS_IMEI:
if( !ss_data.info_win )
SEND_EVENT(ss_data.win,E_SS_IMEI,0, para);
destroyInfoWindow();
break;
case E_SS_GET_PW:
if( !ss_data.info_win )
SEND_EVENT(ss_data.win,E_SS_GET_PW,0, para);
destroyInfoWindow();
break;
default:
break;
}
return 1; /* consumed */
}
/*******************************************************************************
$Function: services
$Description:
$Returns:
$Arguments:
*******************************************************************************/
//--------------------------wufei modified-------------------------------------------
void services (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
T_ss * data = (T_ss *)win_data->user;
T_MFW_SS_PARA * ss_cnf = (T_MFW_SS_PARA *)parameter;
T_DISPLAY_DATA display_info;
unsigned int i = 0;//WUFEI APPEND
unsigned int avail;//WUFEI APPEND
unsigned int n; //WUFEI APPEND
char line[MAX_LINE];
//MmiTrace("serviceshbh");
TRACE_FUNCTION ("services()");
switch( event )
{
case ServicesError:
TRACE_FUNCTION ("ServicesError");
//showError(win, ss_cnf->cb_cnf.ss_error);
services_info_screen(win,TxtFailed);//WUFEI Modify
break;
case ServicesFailed:
TRACE_FUNCTION ("ServicesFailed");
showFailed(win);
break;
case ServicesOtherNumber:
TRACE_FUNCTION("ServicesOtherNumber");
ServicesGetOtherNumber(win);
break;
case ServicesUsedNumber: //WUFEI APPEND
TRACE_FUNCTION("ServicesUsedNumber");
ServicesGetUsedNumber();
break;
case ServicesCUGSetting: //WUFEI APPEND
TRACE_FUNCTION("ServicesCUGSetting");
ServicesCUGMenu();
break;
case ServicesOk:
TRACE_FUNCTION ("ServicesOk");
showOk(win);
break;
case ServicesUSSDEnter:
{
T_EDITOR_DATA editor_data;
TRACE_EVENT("ServicesUSSDEnter");
memset(ss_data.edt_buf_number,'\0',PHB_MAX_LEN);
editor_data.editor_attr.win.px = 6;
editor_data.editor_attr.win.py = 18;
editor_data.editor_attr.win.sx = 80;
editor_data.editor_attr.win.sy = 28;
editor_data.editor_attr.fgColor = 0xffffff;
editor_data.editor_attr.font = 0;
editor_data.editor_attr.mode = edtCurBar1;
editor_data.editor_attr.controls = 0;
editor_data.hide = FALSE;
editor_data.editor_attr.text = (char*)ss_data.edt_buf_number;
editor_data.editor_attr.size = MAX_USSD_LEN;
editor_data.LeftSoftKey = TxtSoftOK;
editor_data.RightSoftKey = TxtSoftBack;
editor_data.AlternateLeftSoftKey = TxtNull;
editor_data.TextString = '\0';
editor_data.TextId = TxtEntAnw;
editor_data.Identifier = ServicesUSSDEnter;
editor_data.mode = DIGITS_MODE;
editor_data.timeout = FOREVER;
editor_data.min_enter = 1;
editor_data.Callback = (T_EDIT_CB)services_info_cb;
editor_data.destroyEditor = TRUE;
/* create the dialog handler */
editor_start(ss_data.win, &editor_data); /* start the editor */
}
break;
case SERVICES_DO_CALL_VOICE_DIVERT:
servicesStoreVoiceMailNumber();
servicesSendCallDivert(0);
break;
case ServicesDoCallDivert:
servicesSendCallDivert(0);
break;
case E_SS_RES:
/*
* event is ignored
*/
break;
case E_SS_NOTIFY:
//TRACE_FUNCTION(" E_SS_NOTIFY");
/*zy move 2003-03-12
we needn't show these information during call
*/
// showSSNotify( win, (T_MFW_SS_NOTIFY*) parameter ); /* all short ss-related notfications */
break;
/*
* modified handling for results taking lists in account
*/
case E_SS_CF_CNF: //wufei modified
/*
* check whether we received data what was requested / consistent
*/
if( CFAction==CFActivate )
{
if( CFService==CFVoice )
{
//step 1 according whether in CFU state and CFType ,set FlashDCTbData.CFFlag
if( !(FlashDCTbData.CFFlag&SetCFU) ) //in CFU state in whick we can not active the other 3 state
{
switch( CFType )
{
case CFNoReach:
FlashDCTbData.CFFlag |=SetCFNRc;
break;
case CFBusy:
FlashDCTbData.CFFlag |=SetCFB;
break;
case CFNoReply:
FlashDCTbData.CFFlag |=SetCFNRy;
break;
case CFUnconditional:
FlashDCTbData.CFFlag |=SetCFU;
break;
}
}
flash_DCTbwrite();
//if in CFU state ,we do not change bits in FlashDCTbData.CFFlag,because it can not active CFNoReach CFBusy CFNoReply when in CFUnconditional
//step 2 show iconIdCallFor
switch( srv_check_CF_telephony_status ( &ss_cnf->cf_cnf ) )
{
case CF_ACTIVE_STATUS:
iconsSetState(iconIdCallFor);
showCFStatus(win, data); //hu binhao 2003-2-21
break;
case CF_INACTIVE_STATUS:
iconsDeleteState(iconIdCallFor);
break;
default: // CF_UNKNOWN_STATUS
//iconsDeleteState(iconIdCallFor); //SPR#984 - DS - Commented out. Leave state unchanged as default.
services_info_screen(win,TxtFailed);//hu binhao 2003-2
break;
}
//step 3 show dialog
// showCFStatus(win, data);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -