The term command refers to events that are received when a mobile device
user selects an option in the Options menu or presses a softkey (for
more information, see UI concepts).
The mobile device user input results in the application framework returning
a command ID that corresponds to the softkey or Options menu selection.
Command IDs are mapped to the selection options in the CBA and Menu bar resource
definitions. You can use either custom command IDs, which must be defined
in your application hrh
resource
file, or precompiled
values available from the S60 platform in your resource definitions.
At runtime, the application framework catches the command ID values and passes
them to the application that has focus for handling. The following commands
have special requirements:
EEikCmdExit
, which is sent by the application
framework to exit open applications. This command ID must not be used in the
resource file definitions, as it is reserved for the application framework.
For more information on the special requirements for handling this command,
see Handling EEikCmdExit.
EAknSoftKeyBack
, which is delivered
in response to a mobile device user pressing the Back
softkey.
The behavior required in response to this command depends on the context,
but if an exit is required it needs to be handled in the same manner as with
the EEikCmdExit
command.
For more information on the requirements for EAknSoftKeyBack
behavior,
see the S60
UI Style Guide.
EAknSoftkeyOptions
, which is associated
with the Options
softkey, is handled by the application
framework directly and results in the Options
menu being
presented to the mobile device user.
For more information on resource files, see Managing resource files.
For an example of a resource file, see Resource management example: HelloWorldBasic.
Figure: Options menu
Commands are passed to the object with which the menu is associated. The object that receives the command should handle the command if it is specific to the object. If the command is relevant to another object, then it should be passed onto the other application object. The actual implementation depends on the design of your application.
If the application above uses an S60 view architecture, then the command handling functions as follows.
If a mobile device user selects Create New
,
then the application framework returns the command associated with that menu
item to the view controller for
the view indicated by the first tab.
Since this command is unique to this view, the command must be handled in the view controller for this view.
If there was an Exit
menu item that
was applicable for the application generally, then you must pass the command
for this menu item to the UI
controller and handle the command there.
To handle commands, you must override CEikAppUi::HandleCommandL
.
The options are as follows:
In a traditional Symbian OS UI architecture, the command needs to be handled in the UI controller. An example of an implementation is as follows:
void CMyCommandHandlingAppUi::HandleCommandL(TInt aCommand) { switch(aCommand) { case EEikCmdExit: case EAknSoftkeyExit: { Exit(); break; } case EMyCommandID1: { //do something } break; default: break; } }
where EEikCmdExit
is provided from the application
framework, EAknSoftkeyExit
is the command ID that the
application framework returns when a mobile device user presses the Back
softkey,
and EMyCommandID1
is a command ID from your application hrh
file.
For more information on the handling of the exit command IDs, see Handling EEikCmdExit.
In an S60
view architecture, the command is received by the active view.
It should be handled by the view if the command is view specific, otherwise
it should be passed to the UI controller CAknViewAppUi
(-derived
class). For an example of view-specific command handling, see the following:
void CMyCommandHandlingViewClass::HandleCommandL(TInt aCommand) { switch ( aCommand ) { case EAknSoftkeyExit: { AppUi()->HandleCommandL(EEikCmdExit); break; } case EMyCommandID1: { // Do something. break; } default: { AppUi()->HandleCommandL( aCommand ); break; } } }
where EEikCmdExit
is provided from the application
framework, EAknSoftkeyExit
is the command ID that the
application framework returns when a mobile device user presses the Back
softkey,
and EMyCommandID1
is a command ID from your application hrh
file.
In this example, the last case (default) hands over unhandled commands to the UI controller.
For more information on the handling of the exit command IDs, see Handling EEikCmdExit.