The item-specific commands and item-action commands in options
menu must be flagged with the EEikMenuItemSpecific
and EEikMenuItemAction
flags
introduced in Symbian^3. This enables the UI framework to hide them in the
options menu and display them only in the stylus pop-up menu. The touch down
and hold action opens the stylus pop-up menu. Touch down and release performs
an action.
Actions like opening a radio button list and virtual input are performed on the first tap. These actions are normally handled by the UI framework. However, if your application contains an implementation of its own for handling these actions (for example, opening a custom component on the second tap) it must be changed to follow the single-tap style.
Add the EEikMenuItemAction
flag
to all item-action commands in your options menu resource definitions. Menu
item-action commands are functions that are called during touch down and release
on an item (for example, Open action).
For example,
/** *AppList View menuitems (Counters) */ RESOURCE MENU_PANE r_logs_applist_menu { items = { MENU_ITEM { command = ELogsCmdMenuOpen; txt = qtn_logs_cmd_open; //--------------------------------------------------------------- // Include the following line to the list-item action commands flags =EEikMenuItemAction; //---------------------------------------------------------------- } }; }
Add the EEikMenuItemSpecific
flag
to all (other than item-action) item-specific commands in options menu resource
definitions.
For example,
RESOURCE MENU_PANE r_common_event_menu_send_events { items = { MENU_ITEM /* Send */ { command = ELogsCmdMenuSendUi; txt = qtn_stm_om_send; //------------------------------------------------------------------------- //Add the following line to the list item-specific commands flags = EEikMenuItemSpecific; //------------------------------------------------------------------------- }, MENU_ITEM /* Clear list */ { command = ELogsCmdMenuDeleteAll; txt = qtn_stm_om_delete_all; } }; }
Note: An application view containing
forms need not flag item-specific commands, as forms are always highlighted.If your application
code dynamically adds or removes menu items, you must change
the flag value of the menu pane using the CEikMenuPane::SetItemSpecific()
function.
For example,
/* Add send message item to menu above position pos */ TInt pos = 0; /* Returns pointer to menu item */ aMenuPane->ItemAndPos(ELogsCmdMenuSendUi, pos); /* Delete marker item from menu */ aMenuPane->DeleteMenuItem(ELogsCmdMenuSendUi); /* No need here yet to tailor subitems in SendUi menu */ TSendingCapabilities capabilities(0, 0, 0); LogsAppUi() -> SendUiL() ->AddSendMenuItemL ( *aMenuPane, pos, /* Position in menupane */ ELogsCmdMenuSendUi, /* Command id to be used for "Send" menu item */ capabilities ); aMenuPane->SetItemTextL(ELogsCmdMenuSendUi, iSendUiText->Des()); //------------------------------------------------------------- // Include the following line to dynamically change the flag value aMenuPane->SetItemSpecific(ELogsCmdMenuSendUi, ETrue); //-----------------------------------------------------------------