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

📄 mminetwork.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
        return TRUE;

    return FALSE;
}

/*******************************************************************************

 $Function:    	ListMenuData

 $Description:	 Creates a list of available PLMNs for selection.
             
 $Returns:		

 $Arguments:	
 
*******************************************************************************/
static ListMenuData * network_create_list (T_network * data, T_MFW_PLMN_LIST * plmn_list)
{
    UBYTE i;

    ListMenuData *list_menu_data = (ListMenuData *)ALLOC_MEMORY (sizeof (ListMenuData));

    if( list_menu_data EQ 0 )
        return NULL;

    list_menu_data->List = (T_MFW_MNU_ITEM *) ALLOC_MEMORY (plmn_list->count * sizeof (T_MFW_MNU_ITEM));
    if( list_menu_data->List EQ 0 )
    {
        if( list_menu_data NEQ 0 )   //xsf add 2003.02.25
            FREE_MEMORY ((UBYTE *)list_menu_data, sizeof (ListMenuData));
        return NULL;
    }

    /*
     * Fill Menu List
     */
    for( i=0;i<plmn_list->count;i++ )
    {
        /* 2004/05/26 sunsj modify */
        list_menu_data->List[i].icon = 0; 
        list_menu_data->List[i].exta = 0;
        list_menu_data->List[i].edit = 0;
        list_menu_data->List[i].menu = 0;
        list_menu_data->List[i].func = 0;

        if( i<plmn_list->count )
        {
            /*
             * set network name
             */
#ifdef NO_ASCIIZ
            if( plmn_list->plmn[i].network_long.len NEQ 0 )
            {
                if( !strcmp((char *)(plmn_list->plmn[i].network_long.data), "CHINA  MOBILE")
                    ||!strcmp((char *)(plmn_list->plmn[i].network_long.data), "CHINA MOBILE") ) //xsf add for Chinese display 10.10 
                    list_menu_data->List[i].str = (char *)MmiRsrcGetText(T_China_Telecomm);

                else if( !strcmp((char *)(plmn_list->plmn[i].network_long.data),"CHN-CUGSM") )
                    list_menu_data->List[i].str = (char *)MmiRsrcGetText(T_China_Unicomm);
                else
                    list_menu_data->List[i].str = (char *)(plmn_list->plmn[i].network_long.data);
            }
#else       
            if( strlen((char *)plmn_list->plmn[i].network_long) NEQ 0 )
                list_menu_data->List[i].str = (char *)plmn_list->plmn[i].network_long;
#endif            

            else
                list_menu_data->List[i].str = (char *)plmn_list->plmn[i].network_numeric;

            /*
             * Store numeric network name in any case
             */
            strncpy ((char *)data->network_search_name[i], (char *)plmn_list->plmn[i].network_numeric, 6);


            /*
             * NOTE : add forbidden indicator
             */
            list_menu_data->List[i].flagFunc = item_flag_none;
        }
        else
        {
            //     list_menu_data->List[i].flagFunc = item_flag_hide;
        }
    }

    /*
     * Fill common parameter for list handling
     */

    list_menu_data->ListLength     = plmn_list->count;
    list_menu_data->ListPosition   = 1;
    list_menu_data->CursorPosition = 1;
    list_menu_data->SnapshotSize   = plmn_list->count;
    list_menu_data->Font           = 0;
    list_menu_data->LeftSoftKey    = TxtSoftSelect;
    list_menu_data->RightSoftKey   = TxtSoftBack;
    list_menu_data->KeyEvents      = KEY_RIGHT  | KEY_HUP | KEY_LEFT |KEY_OK| KEY_MNUUP | KEY_MNUDOWN;
    list_menu_data->Reason         = 0;
    list_menu_data->Strings        = TRUE;
    list_menu_data->Attr           = &network_menuAttrib;
    list_menu_data->autoDestroy    = TRUE;
    list_menu_data->ListMenuFlag =1;         //xsf add 2 lines for listmenu title 2002.10.10 
    list_menu_data->ListMenuHeadStr = (char *) MmiRsrcGetText(TxtPLMNavailable);

    return list_menu_data;
}

/*******************************************************************************

 $Function:    	network_create_pref_list

 $Description:	 Creates a list of preferred PLMNs for selection.
             
 $Returns:		

 $Arguments:	
 
*******************************************************************************/
static ListMenuData * network_create_pref_list (T_network * data)
{
    UBYTE i;

    ListMenuData *list_menu_data = (ListMenuData *)ALLOC_MEMORY (sizeof (ListMenuData));

    if( list_menu_data EQ 0 )
    {
        return NULL;
    }

    list_menu_data->List = (T_MFW_MNU_ITEM *) ALLOC_MEMORY ((data->pplmn_mem.maxRcd) * sizeof (T_MFW_MNU_ITEM));

    if( list_menu_data->List EQ 0 )
    {
        return NULL;
    }

    TRACE_EVENT ("network_create_pref_list ()");



    /*
     * Fill Menu List
     */
    for( i=0; i < (network_data.pplmn_mem.maxRcd); i++ )
    {
        list_menu_data->List[i].icon = 0;
        list_menu_data->List[i].exta = 0;
        list_menu_data->List[i].edit = 0;
        list_menu_data->List[i].menu = 0;
        list_menu_data->List[i].func = 0;

        /*
         * set network name
         */

#ifdef NO_ASCIIZ
        if( network_data.pplmn[i].network_long.len NEQ 0 )
        {
            list_menu_data->List[i].str = (char *)network_data.pplmn[i].network_long.data;
        }
#else       
        if( strlen((char *)network_data.pplmn[i].network_long) NEQ 0 )
        {
            list_menu_data->List[i].str = (char *)network_data.pplmn[i].network_long;
        }
#endif
        else
        {
            list_menu_data->List[i].str = GET_TEXT(TxtEmpty);
            TRACE_EVENT ("network_long == 0");
        }

        list_menu_data->List[i].flagFunc = item_flag_none;

    }
    /*
     * Fill common parameter for list handling
     */


    list_menu_data->ListLength     = network_data.pplmn_mem.maxRcd;
    list_menu_data->ListPosition    = 1;
    list_menu_data->CursorPosition   = 1;
    list_menu_data->SnapshotSize  = network_data.pplmn_mem.maxRcd;
    list_menu_data->Font          = 0;
    list_menu_data->LeftSoftKey   = TxtSoftSelect;
    list_menu_data->RightSoftKey  = TxtSoftBack;
    list_menu_data->KeyEvents      = KEY_CLEAR | KEY_RIGHT | KEY_LEFT|KEY_OK | KEY_MNUUP | KEY_MNUDOWN;
    list_menu_data->Reason         = 0;
    list_menu_data->Strings        = TRUE;
    list_menu_data->Attr           = &network_menuAttrib;
    list_menu_data->autoDestroy    = TRUE; 


    return list_menu_data;
}

/*******************************************************************************

 $Function:    	network_create_mobile_list

 $Description:	 
             
 $Returns:		

 $Arguments:	
 
*******************************************************************************/
static ListMenuData * network_create_mobile_list (T_network_OPT * data)
{
    UBYTE i;

    ListMenuData *list_menu_data = (ListMenuData *)ALLOC_MEMORY (sizeof(ListMenuData));

    if( list_menu_data EQ 0 )
    {
        return NULL;
        TRACE_EVENT ("failed to create the list");
    }


    list_menu_data->List = (T_MFW_MNU_ITEM *) ALLOC_MEMORY (MAX_SHOW_OF_PLMN * sizeof (T_MFW_MNU_ITEM));

    if( list_menu_data->List EQ 0 )
    {
        return NULL;
        TRACE_EVENT ("failed to create the list");
    }

    TRACE_EVENT ("network_create_mobile_list ()");  



    /*
     * Fill Menu List
     */
    for( i=0; i < MAX_SHOW_OF_PLMN; i++ )
    {
        list_menu_data->List[i].icon = 0;
        list_menu_data->List[i].exta = 0;
        list_menu_data->List[i].edit = 0;
        list_menu_data->List[i].menu = 0;
        list_menu_data->List[i].func = 0;

        /*
         * set network name
         */


#ifdef NO_ASCIIZ
        if( data->pplmn[i].network_long.len NEQ 0 )
        {
            list_menu_data->List[i].str = (char *)data->pplmn[i].network_long.data;
        }
#else     
        if( strlen((char *)data->pplmn[i].network_long) NEQ 0 )
        {
            list_menu_data->List[i].str = (char *)data->pplmn[i].network_long;
        }
#endif
        else
        {
            list_menu_data->List[i].str = GET_TEXT(TxtEmpty);
        }


        list_menu_data->List[i].flagFunc = item_flag_none;

    }
    /*
     * Fill common parameter for list handling
     */


    list_menu_data->ListLength     = MAX_SHOW_OF_PLMN;
    list_menu_data->ListPosition     = 1;
    list_menu_data->CursorPosition  = 1;
    list_menu_data->SnapshotSize   = MAX_SHOW_OF_PLMN;
    list_menu_data->Font           = 0;
    list_menu_data->LeftSoftKey     = TxtSoftSelect;
    list_menu_data->RightSoftKey   = TxtSoftBack;
    list_menu_data->KeyEvents      = KEY_CLEAR | KEY_RIGHT | KEY_LEFT |KEY_OK| KEY_MNUUP | KEY_MNUDOWN;
    list_menu_data->Reason         = 0;
    list_menu_data->Strings        = TRUE;
    list_menu_data->Attr           = &network_menuAttrib;
    list_menu_data->autoDestroy    = TRUE;  /*destroy the menulist after press any sofkey*/

    return list_menu_data;
}


/*******************************************************************************

 $Function:    	network_submenu

 $Description:	Creates a submenu for the preferred list. 
             
 $Returns:		

 $Arguments:	
 
*******************************************************************************/
static ListMenuData * network_submenu (T_network * data, T_MFW_NETWORK_STRUCT * plmn_list)
{
    UBYTE i;


    ListMenuData *list_menu_data = (ListMenuData *)ALLOC_MEMORY (sizeof (ListMenuData));

    if( list_menu_data EQ 0 )
        return NULL;

    list_menu_data->List = (T_MFW_MNU_ITEM *) ALLOC_MEMORY ((NETWORK_MENU_ITEM) * sizeof (T_MFW_MNU_ITEM));
    if( list_menu_data->List EQ 0 )
        return NULL;

    /*
     * Fill Menu List
     */
    for( i=0;i<(NETWORK_MENU_ITEM);i++ )
    {
        list_menu_data->List[i].icon = 0;
        list_menu_data->List[i].exta = 0;
        list_menu_data->List[i].edit = 0;
        list_menu_data->List[i].menu = 0;
        list_menu_data->List[i].func = 0;

        /*
         * set network name
         */
#ifdef NO_ASCIIZ
        if( plmn_list->network_long.len NEQ 0 )
            list_menu_data->List[i].str = (char *)plmn_list->network_long.data;
#else 
        if( strlen((char *)plmn_list->network_long) NEQ 0 )
            list_menu_data->List[i].str = (char *)plmn_list->network_long;
#endif

        else
            ;
        //strncpy ((char *)list_menu_data->List[i].str,(char *)empty, 6);


        plmn_list ++;

    }
    /*
     * Fill common parameter for list handling
     */
    list_menu_data->ListLength     = data->pplmn_mem.maxRcd;
    list_menu_data->ListPosition   = 1;
    list_menu_data->CursorPosition = 1;
    list_menu_data->SnapshotSize   = data->pplmn_mem.maxRcd;
    list_menu_data->Font           = 0;
    list_menu_data->LeftSoftKey    = TxtSoftSelect;
    list_menu_data->RightSoftKey   = TxtSoftBack;
    list_menu_data->KeyEvents      = KEY_CLEAR | KEY_RIGHT | KEY_LEFT | KEY_MNUUP | KEY_MNUDOWN;
    list_menu_data->Reason         = NETWORK_PREF_LIST_SELECTED;
    list_menu_data->Strings        = TRUE;
    list_menu_data->Attr           = &network_menuAttrib;


    return list_menu_data;
}



/*******************************************************************************

 $Function:    	network_list_cb

 $Description:	Callback function list dialog.
             
 $Returns:		

 $Arguments:	
 
*******************************************************************************/
static void network_list_cb(T_MFW_HND win, ListMenuData * ListData)
{
    TRACE_FUNCTION ("network_list_cb()");
    if( (ListData->Reason EQ LISTS_REASON_SELECT) || (ListData->Reason EQ LISTS_REASON_OK) )     //xsf add for list menu KCD_OK=KCD_LEFT 2003.02.18
    {
        SEND_EVENT (win, NETWORK_LIST_SELECT_PLMN, ListData->ListPosition, NULL);

    }
    else if( (ListData->Reason EQ LISTS_REASON_BACK) || (ListData->Reason EQ LISTS_REASON_CLEAR)
             || (ListData->Reason EQ LISTS_REASON_HANGUP) )
    {
        FREE_MEMORY ((UBYTE *)network_data.network_list->List, network_data.network_list->ListLength* sizeof (T_MFW_MNU_ITEM));
        FREE_MEMORY ((UBYTE *)network_data.network_list, sizeof (ListMenuData));
        network_data.network_list = NULL;
    }
}

/*******************************************************************************

 $Function:    	network_pref_list_cb

 $Description:	Callback function pref. list dialog.
             
 $Returns:		

 $Arguments:	
 
*******************************************************************************/
static void network_pref_list_cb(T_MFW_HND win, ListMenuData * ListData)
{
    TRACE_FUNCTION ("network_pref_list_cb()");

    if( (ListData->Reason EQ LISTS_REASON_SELECT) || (ListData->Reason EQ LISTS_REASON_OK) )     //xsf add for list menu KCD_OK=KCD_LEFT 2003.02.18
    {

        // call here the MenuOptions with the items "Select from the list"
        //		
        FREE_MEMORY ((UBYTE *)network_data.network_list->List, (network_data.pplmn_mem.maxRcd) * sizeof (T_MFW_MNU_ITEM));

        FREE_MEMORY ((UBYTE *)network_data.network_list, sizeof (ListMenuData));


        //keep the position of the selected PLMN, need it later to update the list
        network_data.Listposition = ListData->ListPosition;

        network_MNU_start(win,&network_OPTAttrib);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -