📄 mminetwork.c
字号:
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 + -