⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmiservices.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
    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 + -