You Are Here:

Community: Wiki

This page was last modified 13:36, 3 November 2008.

TSS000458 - Inserting text or an icon on the navi pane of an application

From Forum Nokia Wiki



ID TSS000458 Creation date October 19, 2006
Platform S60 3rd Edition Devices
Category Symbian C++ Subcategory


Keywords (APIs, classes, methods, functions):

Overview

Inserting text or an icon on the navi pane of an application

Description

S60 applications can set custom icons or texts to be displayed on the navi pane while their application is in foreground.

Solution

First, a reference to the status pane is retrieved. Next, the reference of the navi pane is obtained from the status pane. The application then has to create a text-based Navi decorator object using the CAknNavigationDecorator class. Finally, the decorator object needs to be pushed onto the navi pane so that it becomes visible.
//------------------------------------------------------------------------------
  CAknNavigationControlContainer* iNaviPane = 0;
  CAknNavigationDecorator* iNaviDecorator = 0;
  //Get the reference of the status pane
  CEikStatusPane *statusPane = iEikonEnv->AppUiFactory()->StatusPane();
  if ( statusPane )
    {
    //Get the reference of the navi pane
iNaviPane=static_cast<CAknNavigationControlContainer*>(statusPane->ControlL(
    TUid::Uid(EEikStatusPaneUidNavi)) );
    //Create a Navi decorator object
iNaviDecorator= iNaviPane->CreateEditorIndicatorContainerL();
    //Get the reference of the indicator container inside the NaviDecorator
    CAknIndicatorContainer* indiContainer =
      static_cast<CAknIndicatorContainer*>(iNaviDecorator->DecoratedControl());
if ( indiContainer && CEikStatusPaneBase::Current() )
      {
      TBuf<32> msgSize;
      msgSize.Append(_L("Test")); // Text to be displayed

      indiContainer->SetIndicatorValueL(
    TUid::Uid( EAknNaviPaneEditorIndicatorMessageLength ), msgSize );
   
      indiContainer->SetIndicatorState(
    TUid::Uid( EAknNaviPaneEditorIndicatorMessageLength ),
    EAknIndicatorStateOn);
      }

    //Push the object onto the navi pane.
iNaviPane->PushL( *iNaviDecorator );
}
//------------------------------------------------------------------------------

Similarly, the code snippet to display an icon on the navi pane is as follows:
//------------------------------------------------------------------------------
  CFbsBitmap* bitmap = NULL;
  CFbsBitmap* mask = NULL;
  CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
  CAknNavigationControlContainer* naviPane =
    (CAknNavigationControlContainer*)statusPane->ControlL(
      TUid::Uid(EEikStatusPaneUidNavi));
  // Create an icon
  AknIconUtils::CreateIconLC (bitmap, mask, KIconFile,
    EMbmCarsvgCircle, EMbmCarsvgCircle_mask); //KIconFile is the .mif file

  TSize size(30,30);
  AknIconUtils::SetSize(bitmap, size); // Sets the size of the extracted image
  //Create a Navi Decorator encapsulation for the image.
  CAknNavigationDecorator* naviDecorator =
    naviPane->CreateNavigationImageL(bitmap, mask);
  //Push the image onto the navi pane.
  naviPane->PushL(*naviDecorator);
//------------------------------------------------------------------------------
Required include files and libraries:
#include <aknnavi.h>               // for CAknNavigationControlContainer
#include <eikspane.h>              // for CEikStatusPane
#include <aknnavide.h>             // for CAknNavigationDecorator
#include <akniconutils.h>          // for AknIconUtils
#include <aknindicatorcontainer.h> // for CAknIndicatorContainer
LIBRARY     aknicon.lib
LIBRARY     fbscli.lib
LIBRARY     avkon.lib
Note:
The icons or text stay on the navi pane as long as the application is in foreground but they do not affect the idle screen of the device.

Rate This

 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditFurlTechnocratiMagnoliaTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia 
RDF Facets: qdcZidentifierQSxhttpE3aE2fE2fwikiE2eforumE2enokiaE2ecomE2findeE78E2ephpE2fTSS001192E5fE2dE5fUsingE5fapplicationE2dspecificE5fcustomE5ffontsX qdcZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qdcZtypeQUqfnTypeZCommunityContentQ qdcZtypeQUqfnTypeZKnowledgeBaseContentQ qdcZtypeQUqfnTypeZE52esourceQ qdcZtypeQUqfnTypeZTechnicalSolutionQ qdcZtypeQUqfnTypeZWebpageQ qdcZtypeQUqfnTypeZWikiContentQ qdcZtypeQUqmarsZManagedE52esourceQ qdcZtypeQUqwebZInformationE52esourceQ qdcZtypeQUqwebZPageQ qdcZtypeQUqwebZE52esourceQ qdcZtypeQUqrdfsZE52esourceQ qfnZtypeQUqfnTypeZCommunityContentQ qfnZtypeQUqfnTypeZKnowledgeBaseContentQ qfnZtypeQUqfnTypeZE52esourceQ qfnZtypeQUqfnTypeZTechnicalSolutionQ qfnZtypeQUqfnTypeZWebpageQ qfnZtypeQUqfnTypeZWikiContentQ qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX qrdfZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qrdfZtypeQUqfnTypeZCommunityContentQ qrdfZtypeQUqfnTypeZKnowledgeBaseContentQ qrdfZtypeQUqfnTypeZE52esourceQ qrdfZtypeQUqfnTypeZTechnicalSolutionQ qrdfZtypeQUqfnTypeZWebpageQ qrdfZtypeQUqfnTypeZWikiContentQ qrdfZtypeQUqmarsZManagedE52esourceQ qrdfZtypeQUqwebZInformationE52esourceQ qrdfZtypeQUqwebZPageQ qrdfZtypeQUqwebZE52esourceQ qrdfZtypeQUqrdfsZE52esourceQ