Namespaces
Variants
Actions

Available positioning modules

Jump to: navigation, search

The following code snippet demonstrates how to obtain list of the available positioning modules using Symbian C++.

Article Metadata

Article
Created: Den123 (20 Apr 2008)
Last edited: hamishwillee (07 Feb 2012)

Headers:

#include <lbs.h>

Libraries:

LIBRARY       lbs.lib 
LIBRARY bafl.lib //for CDesCArrayFlat
// Position server
RPositionServer posServer;
User :: LeaveIfError( posServer.Connect() );
CleanupClosePushL( posServer );
 
// get default module UID
TPositionModuleId defModuleUid;
User :: LeaveIfError( posServer.GetDefaultModuleId( defModuleUid ) );
 
// get count of available modules
TUint numOfModules = 0;
User :: LeaveIfError( posServer.GetNumModules( numOfModules ) );
if( numOfModules )
{
// array for storing
CDesCArrayFlat* itemArray = new ( ELeave ) CDesCArrayFlat( numOfModules );
CleanupStack :: PushL( itemArray );
 
_LIT( KDefault, "* " ); // default module mark
_LIT( KGeneral, "- " ); // general module mark
const TInt KMaxModuleNameLen = 128;
for( TUint i = 0; i < numOfModules; i++ )
{
// read current module info
TPositionModuleInfo moduleinfo;
posServer.GetModuleInfoByIndex ( i, moduleinfo );
 
// read current module name
TBuf< KMaxModuleNameLen > moduleName;
moduleinfo.GetModuleName( moduleName );
 
// insert marker "*" or "-"
moduleName.Insert( 0, moduleinfo.ModuleId() == defModuleUid ?
KDefault : KGeneral );
 
// append to array
itemArray->AppendL( moduleName );
}
ShowListL( itemArray );
CleanupStack :: PopAndDestroy(); // itemArray
}
 
CleanupStack :: PopAndDestroy(); // posServer

ShowListL function can be implemented as follows:

Headers:

#include <aknlists.h>

Libraries:

LIBRARY       avkon.lib
LIBRARY eikcoctl.lib
LIBRARY eikctl.lib
void YourClass :: ShowListL( CDesCArray* anArray )
{
// create CEikTextListBox instance, list
CEikTextListBox* list = new( ELeave ) CAknSinglePopupMenuStyleListBox;
 
// push list'pointer to CleanupStack.
CleanupStack::PushL( list );
 
// create CAknPopupList instance, popupList
CAknPopupList* popupList = CAknPopupList::NewL( list,
R_AVKON_SOFTKEYS_OK_EMPTY,
AknPopupLayouts::EMenuWindow );
// push popupList'pointer to CleanupStack.
CleanupStack::PushL( popupList );
 
// initialize listbox.
list->ConstructL( popupList, CEikListBox::ELeftDownInViewRect );
list->CreateScrollBarFrameL( ETrue );
list->ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff,
CEikScrollBarFrame::EAuto );
 
// set listitems.
CTextListBoxModel* model = list->Model();
model->SetItemTextArray( anArray );
model->SetOwnershipType( ELbmDoesNotOwnItemArray );
 
// show popup list and then show return value.
popupList->ExecuteLD();
 
// pop the popupList's pointer from CleanupStack
CleanupStack::Pop();
 
// pop and Destroy the list's pointer from CleanupStack
CleanupStack::PopAndDestroy();
}

Comments

Reviewer-approved.png
26 Sep
2009
Article Review by User:FireSwarog (20090926)

With the help of the code snippet from this article you can obtain list of availbale positioning modules and also you can identify which module is currently used by default. This is an important and useful information in many cases, especially when you are developing LBS-application. You can apply fine-tuning of your LBS-application depending on the default module type.
This page was last modified on 7 February 2012, at 06:03.
62 page views in the last 30 days.
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2012 All rights reserved