Available positioning modules
hamishwillee
(Talk | contribs) m (Hamishwillee - Bot update - Fix underscores in categories) |
hamishwillee
(Talk | contribs) m (Hamishwillee - Tidy wiki text) |
||
| Line 1: | Line 1: | ||
| + | [[Category:Location]][[Category:Symbian C++]][[Category:How To]][[Category:Code Snippet]] | ||
| + | {{Abstract|The following code snippet demonstrates how to obtain list of the available positioning modules using Symbian C++.}} | ||
| + | |||
{{ArticleMetaData <!-- v1.1 --> | {{ArticleMetaData <!-- v1.1 --> | ||
|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]] --> | ||
| Line 22: | Line 25: | ||
|author= [[User:Den123]] | |author= [[User:Den123]] | ||
}} | }} | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
'''Headers:''' | '''Headers:''' | ||
| Line 139: | Line 135: | ||
</code> | </code> | ||
| − | + | ||
<!-- Translation --> [[ru:Доступные модули определения местоположения]] | <!-- Translation --> [[ru:Доступные модули определения местоположения]] | ||
Latest revision as of 09:03, 7 February 2012
The following code snippet demonstrates how to obtain list of the available positioning modules using Symbian C++.
Article Metadata
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();
}

