📄 mmiservices.c
字号:
char forwarded_to_number[16];
} T_ss_feature_cf_data;
typedef struct
{
T_ss_feature_cf_data ss[MFW_MAX_FEAT_NR];
} T_ss_feature_cf;
typedef struct
{
USHORT service;
} T_ss_feature_cw_data;
typedef struct
{
USHORT status;
T_ss_feature_cw_data ss[MFW_MAX_FEAT_NR];
} T_ss_feature_cw;
typedef struct
{
USHORT service;
USHORT status;
} T_ss_feature_cb_data;
typedef struct
{
T_ss_feature_cb_data ss[MFW_MAX_FEAT_NR];
} T_ss_feature_cb;
typedef struct
{
T_MMI_CONTROL mmi_control;
T_MFW_HND win; // window handle
T_MFW_HND ss_handle; /* MFW services handler */
T_MFW_HND kbd;
T_MFW_HND kbd_long;
T_MFW_CM_AOC_INFO aocInfo;
T_MFW_HND info_win; /* handle to info dialog */
T_MFW_HND info_wait; /* handle to wait dialog */
T_MFW_HND cb_menu_win; /* handle to ussd number dialog */
T_MFW_HND ussd_num_win; /* handle to ussd number dialog */
T_MFW_HND ussd_name_win; /* handle to ussd name dialog */
T_MFW_HND input_number_win; /* handle to call forward dialog */
T_MFW_HND input_tim_menu;
USHORT event;
char edt_buf_name[PHB_MAX_LEN];
char edt_buf_number[PHB_MAX_LEN];
char edt_buf_cb_password[CB_PSW_LEN+1];
char edt_buf_cb_new_password[CB_PSW_LEN+1];
char edt_buf_cb_conf_new_password[CB_PSW_LEN+1];
char edt_buf_CUG_new_Name[9]; //WUFEI APPEND
char edt_buf_CUG_new_Index[2];//WUFEI APPEND
char edt_buf_NoAnswerTime[4];//WUFEI APPEND
MfwEdtAttr edt_attr_name;
MfwEdtAttr edt_attr_number;
T_ss_feature_cf * mfw_ss_cf;
T_ss_feature_cw * mfw_ss_cw;
T_ss_feature_cb * mfw_ss_cb;
UBYTE current_feature;
UBYTE max_feature;
UBYTE dcs; /* need it for sending ussd to mfw */
char text[25]; //25
char name[24]; //2003-4-8 change 21 to 24
char textNumbert[24]; //2003-4-8 change 21 to 24
} T_ss;
T_ss ss_data = {0};
static MfwMnuAttr UsedNumber_menuAttrib =
{
0,
&menuListArea,
MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */
-1, /* use default font */
NULL, /* with these items */
0 /* number of items */
}; //WUFEI Append
static void srv_empty_list_result (UBYTE ss_category);
/* 2003/11/06, glowing, copy from the new release of TI */
static void srv_empty_list_result_new (UBYTE ss_category, USHORT event, UBYTE ss_status); /* Marcus: Issue 1214: 22/10/2002 */
static void showCFStatus (T_MFW_HND win , T_ss * data );
static UBYTE srv_copy_feature_list_cf (T_ss_feature_cf * out_list, T_MFW_SS_CF_CNF * in_list);
static void srv_get_forwarded_to_number ( char * textString,
char * forwarded_to_number);
static UBYTE srv_get_service_type ( USHORT * textId,
UBYTE ss_telecom_type, UBYTE ss_telecom_service);
static void srv_get_status (USHORT *textId, UBYTE pStatus);
static UBYTE srv_check_CF_telephony_status (T_MFW_SS_CF_CNF * in_list);
static void showCWStatus (T_MFW_HND win, T_ss * data );
static UBYTE srv_copy_feature_list_cw (T_ss_feature_cw * out_list, T_MFW_SS_CW_CNF * in_list);
static void showCBStatus (T_MFW_HND win, T_ss * data );
static UBYTE srv_copy_feature_list_cb (T_ss_feature_cb * out_list, T_MFW_SS_CB_CNF * in_list);
static int services_win_cb(T_MFW_EVENT e, T_MFW_SS_PARA * para);
static int services_ss_cb(T_MFW_EVENT e, T_MFW_HND para);
static int services_info_cb(T_MFW_HND win, USHORT identifier, UBYTE reason);
static void srv_display_status (UBYTE ss_status);
typedef struct
{
int text;
MfwEdtAttr* edt_attr_input;
int left_soft_key;
int right_soft_key;
short abc; /* numeric or alpha? */
void (* callback)(T_MFW_HND win,USHORT reason);
} T_input_properties;
typedef struct
{
T_MMI_CONTROL mmi_control;
T_MFW_HND parent_win;
T_MFW_HND win;
T_MFW_HND kbd;
T_MFW_HND kbd_long;
T_MFW_HND edt_input;
T_input_properties properties;
} T_ussd_input;
static T_MFW_HND ussd_input_create (MfwHnd parent);
static void ussd_input_destroy (MfwHnd window);
static MfwHnd ussd_input_start(MfwHnd parent,T_input_properties *properties);
void ussd_input (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static int ussd_input_win_cb(MfwEvt e, MfwWin *w);
static int ussd_input_kbd_cb(MfwEvt e, MfwKbd *k);
static int ussd_input_kbd_long_cb(MfwEvt e, MfwKbd *k);
typedef struct
{
T_MMI_CONTROL mmi_control;
T_MFW_HND parent_win;
T_MFW_HND win;
T_MFW_HND kbd;
T_MFW_HND kbd_long;
T_MFW_HND edt_input;
T_input_properties properties;
} T_services_input;
typedef struct
{
T_MMI_CONTROL mmi_control;
T_MFW_HND numbers_win; /* MFW win handler */
T_MFW_HND parent;
T_MFW_HND usednumber_handler; /* MFW sms handler */
unsigned char local_status;
ListMenuData * menu_list_data;
} T_USEDNUMBER_INFO; //WUFEI APPEND
typedef struct
{
T_MMI_CONTROL mmi_control;
T_MFW_HND cug_win;
T_MFW_HND parent;
T_MFW_HND cug_handler;
unsigned char local_status;
ListMenuData *menu_list_data;
}T_CUG_INFO; //WUFEI APPEND
typedef struct
{
T_MMI_CONTROL mmi_control;
T_MFW_HND recentcall_win;
T_MFW_HND parent;
T_MFW_HND cug_handler;
unsigned char local_status;
ListMenuData *menu_list_data;
}T_RecentCall_INFO; //WUFEI APPEND
typedef enum
{
E_INIT = 0x0801,
E_BACK,
E_ABORT,
E_EXIT,
E_RETURN,
E_OK,
E_UPDATE//wufei add 0905
} e_UsedNumber_events; //WUFEI APPEND
static T_MFW_HND services_input_create (MfwHnd parent);
static void services_input_destroy (MfwHnd window);
static MfwHnd services_input_start(MfwHnd parent,T_input_properties *properties);
void services_input (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static int services_input_win_cb(MfwEvt e, MfwWin *w);
//static int services_input_kbd_cb(MfwEvt e, MfwKbd *k);
static int services_input_kbd_long_cb(MfwEvt e, MfwKbd *k);
/* editor */
#define SAT_EDITOR_TOP_LEFT_POS_X 6
#define SAT_EDITOR_TOP_LEFT_POS_Y 30
#define SAT_EDITOR_HORIZONTAL_SIZE 84
#define SAT_EDITOR_VERTICAL_SIZE 20
#define SAT_EDITOR_COLOR 0
#define SAT_EDITOR_FONT 0
#define SAT_EDITOR_CONTROLS 0
#define SAT_EDITOR_BUFFER_SIZE 32
/* */
/*******************************************************************************
$Function: servicesInit
$Description:
$Returns:
$Arguments:
*******************************************************************************/
T_MFW_HND servicesInit (T_MFW_HND parent)
{
// TRACE_FUNCTION("servicesInit function");
/*
* Initialise MFW
*/
ss_mfw_init();
/*
* Create any other handler
*/
ss_data.ss_handle = ss_create (0,
0x0FFF,
(T_MFW_CB)services_ss_cb);
ss_data.win = 0;
return(services_create (0));
}
/*******************************************************************************
$Function: servicesExit
$Description: exit services handling
$Returns:
$Arguments:
*******************************************************************************/
void servicesExit (void)
{
// TRACE_FUNCTION("servicesExit");
ss_delete(ss_data.win);
ss_exit();
}
/*******************************************************************************
$Function: services_create
$Description: Creation of an instance for the Services dialog.
$Returns:
$Arguments:
*******************************************************************************/
T_MFW_HND services_create (T_MFW_HND parent_window)
{
T_ss * data = &ss_data;
T_MFW_WIN * win;
// TRACE_FUNCTION("services_create");
data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)services_win_cb);
if( data->win EQ 0 )
return 0;
/*
* Create window handler
*/
data->mmi_control.dialog = (T_DIALOG_FUNC)services;
data->mmi_control.data = data;
win = ((T_MFW_HDR *)data->win)->data;
win->user = (void *) data;
/*
* Create any other handler
*/
data->info_win = 0;
data->info_wait = 0;
data->cb_menu_win = 0;
data->ussd_num_win = 0;
data->ussd_name_win = 0;
data->input_number_win = 0;
memset(data->edt_buf_name,'\0',sizeof(data->edt_buf_name));
memset(data->edt_buf_number,'\0',sizeof(data->edt_buf_number));
memset(data->edt_buf_cb_password,'\0',sizeof(data->edt_buf_number));
bookSetEditAttributes(4,Mmi_layout_first_line()+2,120,32,0,0,edtCurBar1,0,(char*)data->edt_buf_name,PHB_MAX_LEN,&data->edt_attr_name);
bookSetEditAttributes(4,Mmi_layout_first_line()+2,120,32,0,0,edtCurBar1,0,(char*)data->edt_buf_number,PHB_MAX_LEN,&data->edt_attr_number);
winShow (data->win);
/*
* return window handle
*/
return data->win;
}
/*******************************************************************************
$Function: services_destroy
$Description:
$Returns:
$Arguments:
*******************************************************************************/
void services_destroy (T_MFW_HND own_window)
{
T_MFW_WIN * win;
T_ss * data = &ss_data;
// TRACE_FUNCTION("=== services_destroy");
if( data )
{
/*
* Delete WIN Handler
*/
if( data->info_win )
{
SEND_EVENT(data->info_win, DIALOG_DESTROY, 0, 0);
data->info_win=0;
}
if( ss_data.info_wait )
{
TRACE_EVENT("destroying the wait screen b");
SEND_EVENT(ss_data.info_wait, DIALOG_DESTROY, 0, 0);
ss_data.info_wait = 0;
}
if( data->ussd_name_win )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -