The term command refers to events that are received when a device
user selects an option in the Options menu or presses a softkey
(for more information, see UI concepts). The 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 Symbian 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 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.
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 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 Symbian view architecture, then the command handling functions as follows.
If a 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 UI application 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 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 Symbian 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 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: