Archived:Applying actions on list box items using Symbian C++
hamishwillee
(Talk | contribs) m (Hamishwillee - Bot change of template (Template:KnowledgeBase) - now using Template:ArticleMetaData) |
hamishwillee
(Talk | contribs) m (Hamishwillee - Adding missing translation link) |
||
| (7 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| − | {{ | + | {{Archived|timestamp=20120314051316|user=roy.debjit| }} |
| − | + | [[Category:Symbian C++]][[Category:UI]][[Category:S60 1st Edition]][[Category:S60 2nd Edition (initial release)]][[Category:S60 3rd Edition (initial release)]][[Category:S60 3rd Edition FP1]] | |
| − | + | {{ArticleMetaData <!-- v1.2 --> | |
| − | + | ||
| − | [[Category: | + | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
|sourcecode= <!-- Link to example source code (e.g. [[Media:The Code Example ZIP.zip]]) --> | |sourcecode= <!-- Link to example source code (e.g. [[Media:The Code Example ZIP.zip]]) --> | ||
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> | |installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> | ||
| − | |sdk=<!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) --> | + | |devices= <!-- Devices tested against - e.g. ''devices=Nokia 6131 NFC, Nokia C7-00'') --> |
| − | |devicecompatability=<!-- Compatible devices (e.g.: All* (must have GPS) ) --> | + | |sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) --> |
| − | |signing=<!-- Empty or one of Self-Signed, DevCert, Manufacturer --> | + | |platform= S60 1st Edition<br>S60 2nd Edition and FP1, FP2, FP3<br>S60 3rd Edition and FP1 |
| − | |capabilities=<!-- Capabilities required (e.g. Location, NetworkServices. | + | |devicecompatability= <!-- Compatible devices (e.g.: All* (must have GPS) ) --> |
| − | |author=[[User:Technical writer 2]] | + | |dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 --> |
| + | |signing= <!-- Empty or one of Self-Signed, DevCert, Manufacturer --> | ||
| + | |capabilities= <!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. --> | ||
| + | |keywords= <!-- APIs, classes and methods (e.g. QSystemScreenSaver, QList, CBase --> | ||
| + | |language= <!-- Language category code for non-English topics - e.g. Lang-Chinese --> | ||
| + | |translated-by= <!-- [[User:XXXX]] --> | ||
| + | |translated-from-title= <!-- Title only --> | ||
| + | |translated-from-id= <!-- Id of translated revision --> | ||
| + | |review-by= <!-- After re-review: [[User:username]] --> | ||
| + | |review-timestamp= <!-- After re-review: YYYYMMDD --> | ||
| + | |update-by= <!-- After significant update: [[User:username]]--> | ||
| + | |update-timestamp= <!-- After significant update: YYYYMMDD --> | ||
| + | |creationdate= 20070510 | ||
| + | |author= [[User:Technical writer 2]] | ||
| + | <!-- The following are not in current metadata --> | ||
| + | |id= TSS000647 | ||
}} | }} | ||
| Line 27: | Line 30: | ||
== Description == | == Description == | ||
| − | Below is a code snippet demonstrating how to apply actions on a list box item selected by the user. | + | Below is a code snippet demonstrating how to apply actions on a list box item selected by the user. |
| + | |||
| + | The code to create a simple list box can be obtained from the link: [[How to create a simple listbox in Symbian C++]]. It is possible to apply any actions (e.g., displaying a popup or a dialog) by catching key events for a list box that currently has keyboard focus. This is done in the OfferKeyEventL() function of the container class that owns the list box. | ||
== Solution == | == Solution == | ||
| − | + | <code cpp> | |
| + | TKeyResponse CMyExampleAppView::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType) | ||
| + | { | ||
| + | if(aType != EEventKey) | ||
| + | { | ||
| + | return EKeyWasNotConsumed; | ||
| + | } | ||
| + | switch(aKeyEvent.iCode) | ||
| + | { | ||
| + | case EKeyUpArrow: | ||
| + | case EKeyDownArrow: | ||
| + | { | ||
| + | // Forward up and down key press events to the list box | ||
| + | return iListBox->OfferKeyEventL( aKeyEvent, aType ); | ||
| + | } | ||
| + | case EKeyOK: // display an information note when item is selected | ||
| + | { | ||
| + | _LIT(KFormatMessage, "Selected item: %d"); | ||
| + | TInt idx = iListBox->CurrentItemIndex(); | ||
| + | TBuf<32> message; | ||
| + | message.Format(KFormatMessage, idx); | ||
| + | CAknInformationNote* Note = new (ELeave) CAknInformationNote; | ||
| + | Note->ExecuteLD(message); | ||
| + | return EKeyWasConsumed; | ||
| + | } | ||
| + | default: | ||
| + | break; | ||
| + | } | ||
| + | return EKeyWasNotConsumed; | ||
| + | } | ||
| + | </code> | ||
| − | [[ | + | Also make sure to add this line |
| + | <code cpp>AddToStackL( iAppView );</code> | ||
| + | in AppUi's {{Icode|ConstructL()}} to add the view/container to the control stack and receive {{Icode|OfferKeyEventL()}} calls. | ||
| + | <!-- Translation --> [[zh-hans:如何在列表框项中响应动作]] | ||
Latest revision as of 08:34, 18 September 2012
Archived: This article is archived because it is not considered relevant for third-party developers creating commercial solutions today. If you think this article is still relevant, let us know by adding the template {{ReviewForRemovalFromArchive|user=~~~~|write your reason here}}.
Article Metadata
Compatibility
Platform(s): S60 1st Edition
S60 2nd Edition and FP1, FP2, FP3
S60 3rd Edition and FP1
S60 2nd Edition and FP1, FP2, FP3
S60 3rd Edition and FP1
Article
Created: User:Technical writer 2
(10 May 2007)
Last edited: hamishwillee
(18 Sep 2012)
Overview
Applying actions on list box items
Description
Below is a code snippet demonstrating how to apply actions on a list box item selected by the user.
The code to create a simple list box can be obtained from the link: How to create a simple listbox in Symbian C++. It is possible to apply any actions (e.g., displaying a popup or a dialog) by catching key events for a list box that currently has keyboard focus. This is done in the OfferKeyEventL() function of the container class that owns the list box.
Solution
TKeyResponse CMyExampleAppView::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
{
if(aType != EEventKey)
{
return EKeyWasNotConsumed;
}
switch(aKeyEvent.iCode)
{
case EKeyUpArrow:
case EKeyDownArrow:
{
// Forward up and down key press events to the list box
return iListBox->OfferKeyEventL( aKeyEvent, aType );
}
case EKeyOK: // display an information note when item is selected
{
_LIT(KFormatMessage, "Selected item: %d");
TInt idx = iListBox->CurrentItemIndex();
TBuf<32> message;
message.Format(KFormatMessage, idx);
CAknInformationNote* Note = new (ELeave) CAknInformationNote;
Note->ExecuteLD(message);
return EKeyWasConsumed;
}
default:
break;
}
return EKeyWasNotConsumed;
}
Also make sure to add this line
AddToStackL( iAppView );
in AppUi's ConstructL() to add the view/container to the control stack and receive OfferKeyEventL() calls.

