📄 mmishortcutmnu.c
字号:
case TxtRejectCalls:
GetLJNrecordStart(data->win);
break;
case TxtAlarm:
data->menu_options_win=FunctionMenuStart( data->win, AlarmMenuAttributes(),AlarmEntry);
break;
case TxtTimer:
tooltimerstart(data->win);
break;
case TxtStopwatch:
data->menu_options_win=FunctionMenuStart(data->win, stopwatchMenuAttributes(),StopwatchEntry);
break;
case TxtSchedule:
calin_start(data->win);
break;
case TxtFunctionSelect:
data->menu_options_win=FunctionMenuStart( data->win, menuFunctionAttributes(),FunctionSelectEntry);
data->Listmnu_pos = 0;
break;
default:
break;
}
}
break;
case LISTS_REASON_BACK:
case LISTS_REASON_CLEAR:
case LISTS_REASON_HANGUP:
{
listsDestroy(ListData->win);
/*
FREE_MEMORY((void *)data->menu_list_data->List, wordstrlen(data->scmenu) *sizeof(T_MFW_MNU_ITEM));
FREE_MEMORY((void *)data->menu_list_data,sizeof(ListMenuData));
data->menu_list_data=NULL;
ShortCutMnu_destroy(data->win);
*/
data->Listmnu_pos = 0; //xsf add to record the position of quick function before exeuting it 12.30
SEND_EVENT(data->win, MNU_EXIT, 0, 0);
}
break;
//begin of xsf add data->menu for list menu KCD_1__KCD_9 2003.02.18
case LISTS_REASON_KCD1:
case LISTS_REASON_KCD2:
case LISTS_REASON_KCD3:
case LISTS_REASON_KCD4:
case LISTS_REASON_KCD5:
case LISTS_REASON_KCD6:
case LISTS_REASON_KCD7:
case LISTS_REASON_KCD8:
case LISTS_REASON_KCD9:
mnuKeyAction(data->menu,ListData->Reason-20);
break;
//end of xsf add data->menu for list menu KCD_1__KCD_9 2003.02.18
default:
break;
}
}
/*******************************************************************************
$Function: ShortCutMnu_destroy
$Description: Destroy the window.
$Returns: none
$Arguments: own_window- current window
*******************************************************************************/
void ShortCutMnu_destroy(MfwHnd own_window)
{
T_MFW_WIN * win_data;
T_SHORTCUTMNU_INFO * data;
U8 numberOfscmenus,index;
char msg[100];
TRACE_EVENT ("ShortCutMnu_destroy()");
sprintf(msg,"hander:%d",(int *)own_window);
TRACE_EVENT(msg);
win_data = ((T_MFW_HDR *)own_window)->data;
data = (T_SHORTCUTMNU_INFO *)win_data->user;
//sprintf(msg,"data:%d",(int *)data);
//TRACE_EVENT(msg);
// shortcutmenu_flag=0;
if(data)
{
/*
* Delete WIN handler
*/
win_delete (data->win);
/*
* Free Memory
*/
numberOfscmenus=wordstrlen(data->scmenu);
//sprintf(msg,"destroy:%d",numberOfscmenus);
//TRACE_EVENT(msg);
if(data->menu_list_data != NULL)
{
TRACE_EVENT("list not empty");
FREE_MEMORY ((void *)data->menu_list_data->List, numberOfscmenus * sizeof (T_MFW_MNU_ITEM));
FREE_MEMORY ((void *)data->menu_list_data, sizeof (ListMenuData));
}
FREE_MEMORY ((void *)data, sizeof (T_SHORTCUTMNU_INFO));
}
else
{
TRACE_EVENT ("melody_destroy() called twice");
}
}
/*******************************************************************************
$Function: ShortCutMnu_win_cb
$Description: Window callback function for the melody window.
$Returns: none
$Arguments: w - mfw window handler
e - mfw event
*******************************************************************************/
static int ShortCutMnu_win_cb (MfwEvt e, MfwWin *w)
{
TRACE_EVENT ("ShortCutMnu_win_cb()");
switch(e)
{
case MfwWinVisible: /* window is visible */
break;
case MfwWinFocussed: /* input focus / selected */
case MfwWinDelete: /* window will be deleted */
break;
default:
return MFW_EVENT_PASSED;
}
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: FunctionMenuStart
$Description: tbd
$Returns: tbd
$Arguments: tbd
*******************************************************************************/
T_MFW_HND FunctionMenuStart( MfwHnd parent, MfwMnuAttr *menuAttr,SHORT reason )
{
T_MFW_HND win;
if(( win = FunctionMenuCreate( parent ) ) != NULL)
SEND_EVENT( win, FUNCSELECT_INIT,reason, (MfwMnuAttr *) menuAttr );
return win;
}
static T_MFW_HND FunctionMenuCreate(T_MFW_HND parent)
{
T_MFW_WIN *win_data;
T_SHORTCUTMNU_INFO *data=(T_SHORTCUTMNU_INFO*) ALLOC_MEMORY( sizeof( T_SHORTCUTMNU_INFO) );
TRACE_EVENT( "FunctionMenuCreate()" );
/* allocate memory for our control block
*/
if(data == NULL)
return NULL;
/* Create the window if we can
*/
if(( data->win = win_create( parent, 0, E_WIN_VISIBLE, (T_MFW_CB) FunctionMenuWindowCB ) ) == NULL)
{
FREE_MEMORY( (void *)data, sizeof( T_SHORTCUTMNU_INFO ) );
return NULL;
}
/* Okay, we have created the control block and the window, so
we now need to configure the dialog and data pointers
*/
data->mmi_control.dialog = (T_DIALOG_FUNC) FunctionMenuDialog;
data->mmi_control.data = data;
win_data = ((T_MFW_HDR *)data->win)->data;
win_data->user = (void *) data;
data->parent = parent;
/* create keyboards and menus for our window
*/
data->kbd = kbdCreate ( data->win, KEY_ALL, (MfwCb) FunctionMenuKbdCB );
/* And return the handle of the newly created window
*/
return data->win;
}
static void FunctionMenuDialog( T_MFW_HND win, USHORT event, SHORT value, void *parameter )
{
T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data;
T_SHORTCUTMNU_INFO *data = (T_SHORTCUTMNU_INFO *) win_data->user;
MfwMnu *mnu;
char * userdefine;//zy Mobile Innovation add for user define the child menu title value
T_MFW_HND l_parent=data->parent;
TRACE_EVENT( "FunctionMenuDialog()" );
switch(event)
{
case FUNCSELECT_INIT:
if(value==SceneEntry)
{
userdefine=(char *)MmiRsrcGetText(TxtScene);
data->menu = mnuListCreate(data->win, (MfwMnuAttr *) parameter, E_MNU_ESCAPE, (MfwCb) FunctionMenuMenuCB, userdefine );
}
else if(value==SmsReadEntry)
{
userdefine=(char *)MmiRsrcGetText(TxtReadSms);
data->menu = mnuListCreate(data->win,(MfwMnuAttr *) parameter, E_MNU_ESCAPE, (MfwCb) FunctionMenuMenuCB, userdefine );
}
else if(value==AlarmEntry)
{
userdefine=(char *)MmiRsrcGetText(TxtAlarm);
data->menu = mnuListCreate(data->win, (MfwMnuAttr *) parameter, E_MNU_ESCAPE, (MfwCb) FunctionMenuMenuCB, userdefine );
}
else if(value==StopwatchEntry)
{
userdefine=(char *)MmiRsrcGetText(TxtStopwatch);
data->menu = mnuListCreate(data->win, (MfwMnuAttr *) parameter, E_MNU_ESCAPE, (MfwCb) FunctionMenuMenuCB, userdefine );
}
else if(value==FunctionSelectEntry)
{
userdefine=(char *) MmiRsrcGetText(TxtFunctionSelect);
data->menu = mnuListCreate( data->win, (MfwMnuAttr *) parameter, E_MNU_ESCAPE, (MfwCb) FunctionMenuMenuCB, userdefine );
}
mnuLang( data->menu, mainMmiLng );
mnuUnhide( data->menu );
winShow( data->win );
break;
case FUNCSELECT_EXIT:
{
SEND_EVENT(data->parent,MNU_INIT, 0,0);
}
break;
default:
break;
}
}
void FunctionMenuDestroy( MfwHnd window )
{
T_MFW_WIN *win_data = ((T_MFW_HDR *)window)->data;
T_SHORTCUTMNU_INFO *data = (T_SHORTCUTMNU_INFO *) win_data->user;
TRACE_EVENT( "FunctionMenuDestroy()" );
if(data)
{
kbdDelete(data->kbd);
mnuDelete(data->menu);
winDelete( data->win );
FREE_MEMORY( (void *)data, sizeof( T_SHORTCUTMNU_INFO ) );
}
else return;
}
/*******************************************************************************
$Function: FunctionMenuWindowCB
$Description: Menu window handler
$Returns: MFW_EVENT_CONSUMED if event handled, otherwise
MFW_EVENT_PASSED
$Arguments: e, event, m, window handle
*******************************************************************************/
static int FunctionMenuWindowCB( MfwEvt e, MfwWin *w )
{
T_SHORTCUTMNU_INFO * data = (T_SHORTCUTMNU_INFO *)w->user;
MfwMnu * mnu;
UINT32 oldColor,oldFontColor;
TRACE_EVENT( "FunctionMenuWindowCB()" );
switch(e)
{
case MfwWinVisible:
{
dspl_ClearAll(); // sbh - clear screen before update
mnu = (MfwMnu *) mfwControl( data->menu );
displaySoftKeys( TxtSoftSelect, TxtSoftBack);
controlBrowseNew();//2004/07/13 yhf add
//JVJE MmiBookShowDefault();
/*oldColor=dspl_GetBkgColor();
dspl_SetBkgColor(GetPreDefinedColor(ColorSoftKeyBG));
oldFontColor=dspl_GetFrgColor();
dspl_SetFrgColor(GetPreDefinedColor(ColorSoftKeyFont));
displaySoftKeys( '\0', '\0');
displaySoftKeys( TxtSoftSelect, TxtSoftBack);
dspl_SetBkgColor(oldColor);
dspl_SetFrgColor(oldFontColor);*/
/*................................end of zy change for softkey 04/08/02....................................*/
}
break;
default:
{
/* unknown event, pass it up the tree for handling elsewhere
*/
return MFW_EVENT_PASSED;
}
break;
}
/* We got here, event handled, prevent anyone else
dealing with it
*/
return MFW_EVENT_CONSUMED;
}
static int FunctionMenuKbdCB( MfwEvt e, MfwKbd *k )
{
T_MFW_HND window = mfwParent( mfw_header() );
T_MFW_WIN *win_data = ((T_MFW_HDR *)window)->data;
T_SHORTCUTMNU_INFO *data = (T_SHORTCUTMNU_INFO *) win_data->user;
T_MFW_HND l_parent= data->parent;
T_MFW_WIN * parentwin_data=((T_MFW_HDR *)l_parent)->data;
T_SHORTCUTMNU_INFO *parentdata=(T_SHORTCUTMNU_INFO *)parentwin_data->user;
T_MFW_HND idlewin=parentdata->parent;
TRACE_EVENT( "FunctionMenuKbdCB()" );
/* handle the keypress
*/
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 */
case KCD_OK: //xsf add 2003.02.18
mnuSelect(data->menu);
// mnuShow(data->menu);
break;
case KCD_HUP: /* back to idle */
mnuEscape(data->menu);
returntoidle(0); //xsf changed 2003.03.18
break;
case KCD_POWER:
case KCD_RIGHT: /* back to previous menu */
mnuEscape(data->menu);
break;
default: /* no response to all other keys */
break;
}
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: FunctionMenuMenuCB
$Description: Menu handler for the function menu window
$Returns: MFW_EVENT_CONSUMED if event handled, otherwise
MFW_EVENT_PASSED
$Arguments: e, event, m, menu handle
*******************************************************************************/
static int FunctionMenuMenuCB( MfwEvt e, MfwMnu *m )
{
T_MFW_HND window = mfwParent( mfw_header() );
T_MFW_WIN *win_data = ((T_MFW_HDR *)window)->data;
T_SHORTCUTMNU_INFO *data = (T_SHORTCUTMNU_INFO *) win_data->user;
TRACE_FUNCTION( "bookMenuMenuCB()" );
/* We only handle the ESCAPE event in here
*/
switch(e)
{
case E_MNU_ESCAPE:
/* Escape requested, we need to shut down this window
*/
SEND_EVENT(window, FUNCSELECT_EXIT, 0, 0);
break;
default:
/* unknown event, pass it up the tree for handling elsewhere
*/
return MFW_EVENT_PASSED;
break;
}
/* We got here, event handled, prevent anyone else
dealing with it
*/
return MFW_EVENT_CONSUMED;
}
int QuickFunctionSelected(struct MfwMnuTag *m,struct MfwMnuItemTag *mi) //xsf add 2002.12.29
{
int i=0,j=0;
unsigned short temp;
if(wordstrlen(FFS_flashData.shortcutmenu_buffer))
{
/* modified by clrobert 2003-9-28 16:31 */
/* from */
/*
while(strcmp(mi->str,(char *)(FFS_flashData.shortcutmenu_buffer[i]))!=0&&(i<wordstrlen(FFS_flashData.shortcutmenu_buffer)))
i++;
*/
/* to */
while(((U16)mi->str != FFS_flashData.shortcutmenu_buffer[i]) && (i < wordstrlen(FFS_flashData.shortcutmenu_buffer)))
i++;
/* modified end */
if(i==wordstrlen(FFS_flashData.shortcutmenu_buffer))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -