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

📄 mminetwork.c

📁 GSM手机设计软件代码
💻 C
📖 第 1 页 / 共 5 页
字号:

 $Arguments:	
 
*******************************************************************************/
void network_animation_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
{
  TRACE_FUNCTION ("network_animation_cb()");

  network_data.network_search_win = 0;
  network_data.aborted = TRUE;


}

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

 $Function:    	network_MNU_start

 $Description:	called when the user press the Edit Softkey to enter the 
                Option Menu "Select from the list" & "Enter the Network Code" &
                            "Delete"
 $Returns:		

 $Arguments:	
 
*******************************************************************************/

T_MFW_HND network_MNU_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr)
{
    T_MFW_HND win;

    TRACE_FUNCTION ("network_MNU_start()");

    win = network_MNU_create (parent_window);
    if (win NEQ NULL)
	{
	    SEND_EVENT (win, E_INIT, NULL, (void *)menuAttr);
	}
    return win;
}

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

 $Function:    	network_MNU_create

 $Description:	Create the Option window
 
 $Returns:		mfw window handle

 $Arguments:	parent_window -parent window handle
 			
*******************************************************************************/

static T_MFW_HND network_MNU_create(MfwHnd parent_window)
{
    T_network_OPT   * data = (T_network_OPT *)ALLOC_MEMORY (sizeof (T_network_OPT));
    T_MFW_WIN       * win;

    TRACE_FUNCTION ("network_MNU_create()");

    /*
     * Create window handler
     */

    data->win = 
	win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)network_MNU_win_cb);
    if (data->win EQ NULL)
	{
	    return NULL;
	}
  
    /* 
     * connect the dialog data to the MFW-window
     */

    data->mmi_control.dialog = (T_DIALOG_FUNC)network_MNU_exec_cb;
    data->mmi_control.data   = data;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *)data;
    data->parent             = parent_window;

    /*
     * return window handle
     */

    return data->win;
}

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

 $Function:    	network_MNU_destroy

 $Description:	Destroy the Option window
 
 $Returns:		mfw window handle

 $Arguments:	own_window - current window
 			
*******************************************************************************/

static void network_MNU_destroy(MfwHnd own_window)
{
    T_MFW_WIN       * win_data;
    T_network_OPT   * data;

    TRACE_FUNCTION ("network_MNU_destroy()");

    if (own_window)
	{
	    win_data = ((T_MFW_HDR *)own_window)->data;
	    data     = (T_network_OPT *)win_data->user;
		
	    if (data)
		{
			kbd_delete(data->kbd);
			kbd_delete(data->kbd_long);
			mnuDelete (data->menu);
			/*
		     * Delete WIN handler
		     */ 
		    win_delete (data->win); 
			if(data->network_list != NULL)
			{
				FREE_MEMORY ((UBYTE *)data->network_list->List, MAX_SHOW_OF_PLMN * sizeof (T_MFW_MNU_ITEM));

				FREE_MEMORY ((UBYTE *)data->network_list, sizeof (ListMenuData));
				
		    	FREE_MEMORY ((UBYTE *)data->pplmn,MAX_SHOW_OF_PLMN * sizeof (T_MFW_NETWORK_STRUCT));
			}
		    /*     
		     * Free Memory
		     */
		     
		    FREE_MEMORY ((void *)data, sizeof (T_network_OPT));
		}
	    else
		{
		    TRACE_EVENT ("network_MNU_destroy() called twice");
		}
	}
}

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

 $Function:    	network_MNU_exec_cb

 $Description:	Exec callback function for the Option window
 
 $Returns:		none

 $Arguments:	win - current window
 				event - event id
 				value - unique id
 				parameter - optional data.
 			
*******************************************************************************/

void network_MNU_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
    T_MFW_WIN        * win_data = ((T_MFW_HDR *) win)->data;
    T_network_OPT    * data     = (T_network_OPT *)win_data->user;
    T_MFW_HND        * l_parent;
    SHORT            l_id;
    T_MFW_HDR        * parent      =  data->parent;
	T_MFW_EVENT         MfwEvents;
	
    TRACE_FUNCTION ("network_MNU_exec_cb()");


    switch (event)
	{
	case E_INIT:
		data->kbd     =   kbdCreate(data->win,KEY_ALL,         (MfwCb)network_MNU_kbd_cb);
    	data->kbd_long =   kbdCreate(data->win,KEY_ALL|KEY_LONG,(MfwCb)network_MNU_kbd_cb);
    	data->menu    =   mnuCreate(data->win,&network_OPTAttrib, E_MNU_ESCAPE, (MfwCb)network_MNU_mnu_cb);
    	mnuLang(data->menu,mainMmiLng);

    	/* put the (new) dialog window on top of the window stack */
    	mnuUnhide(data->menu);
	    winShow(win);
	    
	    break;
	default:
	    return;
	}
}

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

 $Function:    	network_MNU_mnu_cb

 $Description:	Menu callback function for the Option window
 
 $Returns:		none

 $Arguments:	e - event id
 				m - menu handle
*******************************************************************************/

static int network_MNU_mnu_cb (MfwEvt e, MfwMnu *m)
{
    T_MFW_HND        win      = mfwParent(mfw_header());
    T_MFW_WIN      * win_data = ((T_MFW_HDR *)win)->data;
    T_network_OPT   * data     = (T_network_OPT *)win_data->user;
    T_MFW_HND      * l_parent;
    SHORT            l_id;

    TRACE_FUNCTION ("network_MNU_mnu_cb()");

    switch (e)
        {
	case E_MNU_ESCAPE: /* back to previous menu "pref. network list"*/
	    network_MNU_destroy(data->win);

	 // request MFW to fill up the pref. PLMN list
	    nm_pref_plmn_list(network_data.pplmn, network_data.pplmn_mem.maxRcd, 1);

	    
	    break;
	default: /* in mnuCreate() only E_MNU_ESCAPE has been enabled! */
	    return MFW_EVENT_REJECTED;
        }
    return MFW_EVENT_CONSUMED;
}

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

 $Function:    	network_MNU_win_cb

 $Description:	Window callback function for the Option window
 
 $Returns:		execution status

 $Arguments:	e - event id
 				w - window handle 
*******************************************************************************/

static int network_MNU_win_cb (MfwEvt e, MfwWin *w)
{
    TRACE_FUNCTION ("network_MNU_win_cb()");

    switch (e)
	{
        case MfwWinVisible:  /* window is visible  */
	    displaySoftKeys(TxtSoftSelect,TxtSoftBack);
	    break;
	case MfwWinFocussed: /* input focus / selected   */
	case MfwWinDelete:   /* window will be deleted   */
        default:
	    return MFW_EVENT_REJECTED;
	}
    return MFW_EVENT_CONSUMED;
}

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

 $Function:    	network_MNU_kbd_cb

 $Description:	Exec callback function for the Option window
 
 $Returns:		execution status

 $Arguments:	e - event id
 				k - keyboard info
*******************************************************************************/

static int network_MNU_kbd_cb (MfwEvt e, MfwKbd *k)
{
    T_MFW_HND            win      = mfwParent(mfw_header());
    T_MFW_WIN          * win_data = ((T_MFW_HDR *)win)->data;
    T_network_OPT    * data       = (T_network_OPT *)win_data->user;

    TRACE_FUNCTION ("network_MNU_kbd_cb()");

    if (e & KEY_LONG)
	{
	    switch (k->code)
		{
		case KCD_HUP: /* back to previous menu */
		    mnuEscape(data->menu);
		    break;
		case KCD_RIGHT: /* Power Down */
		    return MFW_EVENT_REJECTED; /* handled by idle */
		default: /* no response to all other keys */
		    return MFW_EVENT_CONSUMED;
		}
	}
    else
	{
	    switch (k->code)
		{
		case KCD_MNUUP: /* highlight previous entry */
		    mnuUp(data->menu);
		    break;
		case KCD_MNUDOWN: /* highlight next entry */
		    mnuDown(data->menu);
		    break;
		case KCD_LEFT: /* activate this entry */
		    mnuSelect(data->menu);
		    break;
		case KCD_HUP: /* back to previous menu */
		case KCD_RIGHT: /* back to previous menu */
		    mnuEscape(data->menu);
		    break;
		default: /* no response to all other keys */
		    return MFW_EVENT_CONSUMED;
		}
	}
    return MFW_EVENT_CONSUMED;
}

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

 $Function:    	network_request_plnm_list

 $Description:	Request existing network list in Mobile
 
 $Returns:		

 $Arguments:	


 *******************************************************************************/
static int network_request_plnm_list(MfwMnu* m, MfwMnuItem* i)
{
    T_MFW_HND          win      = mfwParent(mfw_header());
    T_MFW_WIN        * win_data = ((T_MFW_HDR *)win)->data;
    T_network_OPT    * data     = (T_network_OPT *)win_data->user;

	TRACE_FUNCTION("network_request_plnm_list");
	
    data->pplmn = (T_MFW_NETWORK_STRUCT *)ALLOC_MEMORY ((MAX_SHOW_OF_PLMN) * sizeof (T_MFW_NETWORK_STRUCT));

	if (data->pplmn NEQ 0)
	{
		//now fill up the "data->pplmn" with the PLMN list from ACI
		nm_plnm_list(data->pplmn, 1, MAX_SHOW_OF_PLMN);

	}
	else
	{
		TRACE_EVENT("create the list failed");
		return 0;
	}

	//show the list on the screen now
	data->network_list = network_create_mobile_list (data);
    listDisplayListMenu (data->win, data->network_list,(ListCbFunc)network_mobile_list_cb,0);

	
    return 1;
}

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

 $Function:    	network_delete

 $Description:	
 
 $Returns:		

 $Arguments:	


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

static int network_delete(MfwMnu* m, MfwMnuItem* i)
{

    T_MFW_HND win      = mfwParent(mfw_header());

	TRACE_FUNCTION ("network_delete()");

#ifdef NO_ASCIIZ
	if (network_data.pplmn[network_data.Listposition].network_short.len NEQ 0 )
#else 
	if (strlen((char *)network_data.pplmn[network_data.Listposition].network_short) NEQ 0 )
#endif	
	{
		// if the user selected a pref. PLMN
		network_info_screen (win, TxtDeleted);
	}
	else
	{
		// if the user selected a empty item
		network_info_screen (win, TxtEmptyList);
	}

	// destroy the Menu 
	network_MNU_destroy(win);


}

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

 $Function:    	network_delete_pref_plnm

 $Description:	Delete the selected pref. PLMN l
 
 $Returns:		

 $Arguments:	


 *******************************************************************************/
 void network_delete_pref_plnm (T_MFW_HND win , USHORT identifier, UBYTE reason)
{

	T_MFW_PPLMN_MODE mode;
	UBYTE i;
    T_MFW_WIN       * win_data = ((T_MFW_HDR *)win)->data;
    T_network_OPT    * data     = (T_network_OPT *)win_data->user;

	TRACE_FUNCTION ("network_delete_pref_plnm()");

  
	mode =   DELETE_PREF_PLMN;      /* Delete an entry from the list  */

	//update now the pref. PLMN list
	//(network_data.Listposition) "+1" because the zero is counted as well
	nm_change_pref_plmn(mode, (network_data.Listposition) +1 , 0, 0);

	// clear all the PLMN and fill up with updated list
	for (i=0; i < network_data.pplmn_mem.maxRcd; i++)
	{

#ifdef NO_ASCIIZ
		network_data.pplmn[i].network_long.len = 0;
		network_data.pplmn[i].network_short.len = 0;
#else 
		memset(network_data.pplmn[i].network_long,   '\0', LONG_NAME);
		memset(network_data.pplmn[i].network_short,   '\0', SHORT_NAME);
#endif		
		memset(network_data.pplmn[i].network_numeric, '\0', NUMERIC_LENGTH);
	}


    // request the updated pref. PLMN list
	nm_pref_plmn_list(network_data.pplmn, network_data.pplmn_mem.maxRcd, 1);

}

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

 $Function:    	network_info_screen

 $Description:	confirm the deleted PLMN
 
 $Returns:		

 $Arguments:	


 *******************************************************************************/
void network_info_screen (T_MFW_HND win, USHORT MessageId )
{
    T_DISPLAY_DATA display_info;

    TRACE_FUNCTION ("network_info_screen()");

	dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, MessageId, TxtNull, COLOUR_STATUS_NETWORKS);
	dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)network_delete_pref_plnm, THREE_SECS, 0 );

    info_dialog (win, &display_info); 
}


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

 $Function:    	network_OPT_EDT_start

 $Description:	

 $Returns

⌨️ 快捷键说明

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