Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries. Thanks for all your past and future contributions.
Importance of usability
The importance of usability and its impact on the overall product’s acceptability has been discussed in great lengths at the following resouces :-
As can be understood from the resources detailed above, usability is today one of the most important if not the deciding factor in determining the succes/failure of a given solution. As markets becomes saturated with niche products and other offerings which are feature/functionality rich, usability would probably be the single most unique selling point for any application.
The softkeys and their usage play a big role in the overall user experience, as they are the interface with which the user interacts most often while employing the services of the product. When designing S60 applications, it's important to follow the S60 UI style.
Importance of following style guidelines
Shock and surprise are two evils which should be done away with as much as possible while designing any application, and this applies all the more in the case of mobile applications. A typical mobile application user is very demanding of the interface and features of the application, they also want to be able to use the features in the way they percieve it to work. So if you do/show anything that does not follow the expectations or conventions it is bound to confuse/frustrate the user.
Users always find find it easier to learn how to use your application, if the look and feel is similar to other system applications. The style guide lays down the patterns for all applications and if you adhere to it, you ensure that the softkey terminology and placings are in line with the other applications on the device. The average user would be comfortable using the built in applications like contacts, messaging etc and they would be familiar with the softkey patterns of those applications, so if you follow those conventions even in your application they wouldn’t be in for a rude shock.
Common softkey guidelines
Placement of softkeys
When it comes to the placement of the softkeys, in S60 devices the softkey labels placed on the
*left softkey: Should have a positive actions like OK, Select, Options
*right softkey: Should have a negative actions like Back, Cancel, Quit, Exit
*center softkey Should be select/Done, even though it can be considered as a positive action.
In case the application has options menu available then the left softkey should have "Options", as the text, on click of that the options menu should open up.
It should be easy for the user to see/use the common features of the application and also to be able to close the application easily. Some common guidelines to take care of these expecatations would be as under :-
- The Options menu of the application’s main view should always have "Exit" as the last item in the menu, as an exit in the middle of the menu would be confusing for the user and if pressed by mistake it would end up closing the application even though that may not have been the idea.
- Most commonly used features should always be on the main menu.
- Menu options should be logically grouped in case of a multi view application, and should make sense in context of the view.
- Hide unwanted menu options instead of showing them only to ignore the menu press in those cases.
- Provide user the option to go back to the main view from the other views using the softkeys in case of multi-view application.
- In case of dialogs/settings list/popups etc give the user the choice to cancel/go back to the main view/page. The placement should again adhere to the style guidelines.
- Use cascaded menu in case of choices for a basic operatation on the main menu like sorting, selection mode etc.
Text on the softkeys
Ensure that you use meaningful prompt text on the softkeys, in case of commonly used mobile terms, use them instead of coining your own fancy terms. Also ensure that you don’t use too long texts which are either truncated or ending with ellipsis on the softkeys. The text should be simple and easy to understand, use of technical or complicated messages are a no go.
Use of icons
In case you plan to put icons on the softkeys ensure that those icons logically relate to the prompt text, for instance if the text is Call don’t place a messaging icon or so on.
Stick to conventions
In S60 3rd Edition devices, pressing the End key (Red key) closes the application automatically and is also a Symbian Signing requirement. Unless and until you have a valid case not to close the application on the press of the red key, don’t over ride it.
"Exit" can be placed to the right softkey when there is no need for other labels and it's expected that user might want to close the application.
Softkeys on idle screen
In the idle screen, the softkeys can be used as shortcuts to specific applications. This can be configured by the users and the softkeys will change according to that.
Softkeys and Selection
- In case both the softkeys are available, the select functionality must be linked to the left softkey.
- In case only the left softkey is available, the select functionality must be linked to the left softkey and the right softkey must be disabled.
- In case only the right softkey is available, the select functionality must be linked to the right softkey and the left softkey must be disabled.
Querying softkey positioning
With Nokia E90 one should notice that on the PDA side softkeys are reversed compared to other S60 devices. The same happens on Nokia N93(i) when using landscape mode, too. You can use the following code to find out which softkey is the upper one when the CBA is on the left or right side of the screen. The example code assumes that CBA has Options (EAknSoftkeyOptions) and Exit (EAknSoftkeyExit) commands, otherwise it doesn't work.
CEikButtonGroupContainer* cba = CEikonEnv::Static()->AppUiFactory()->Cba();
if( !cba )
CCoeControl* options = cba->ControlOrNull( EAknSoftkeyOptions );
CCoeControl* exit = cba->ControlOrNull( EAknSoftkeyExit );
if( options && exit )
if( options->Position().iY < exit->Position().iY )
---- Edited by Mayank on 18/06/2009 ----