S60 3rd Edition SDK for Symbian OS
Example Applications Guide

CLandmarksInfoModel Class Reference

#include <LandmarksInfoModel.h>

List of all members.

Public Member Functions

 CLandmarksInfoModel (CLandmarksApplicationEngine &aEngine)
 ~CLandmarksInfoModel ()
CDesCArray * GetLandmarkInfoL (CPosLandmark &aLandmark, RArray< TInt > &aFieldIds)

Private Member Functions

void AddInfoFieldL (const TDesC &aCaption, const TDesC &aText, CDesCArray &aArray, RArray< TInt > &aFieldIds)
void AddLocationFieldsL (TLocality &aLocation, CDesCArray &aArray, RArray< TInt > &aFieldIds)
void AddCategoryFieldsL (CPosLandmark &aLandmark, CDesCArray &aArray, RArray< TInt > &aFieldIds)
void AddTextFieldL (TInt aCaptionId, TDesC &aText, CDesCArray &aArray, RArray< TInt > &aFieldIds)

Private Attributes

CLandmarksApplicationEngine & iEngine
 The application engine used for accessing landmarks.
TRealFormat iRealFormat
 Defines how real numbers are displayed.


Detailed Description

Contains the data model of the landmarks view.

Definition at line 33 of file LandmarksInfoModel.h.


Constructor & Destructor Documentation

CLandmarksInfoModel::CLandmarksInfoModel (  CLandmarksApplicationEngine &  aEngine  ) 
 

C++ constructor.

Definition at line 59 of file LandmarksInfoModel.cpp.

References iRealFormat.

00061     : iEngine(aEngine)
00062         {
00063     // Configure real format
00064     const TChar KDecimalChar = '.';
00065     iRealFormat.iPlaces = KNrOfDecimals;
00066     iRealFormat.iPoint = KDecimalChar;
00067     iRealFormat.iTriLen = 0;
00068     iRealFormat.iWidth = KPosLmMaxTextFieldLength;
00069     iRealFormat.iType = KRealFormatFixed;
00070         }

CLandmarksInfoModel::~CLandmarksInfoModel (   ) 
 

Destructor.

Definition at line 73 of file LandmarksInfoModel.cpp.

00074         {
00075         }


Member Function Documentation

CDesCArray * CLandmarksInfoModel::GetLandmarkInfoL (  CPosLandmark &  aLandmark,
RArray< TInt > &  aFieldIds
) 
 

Generates descriptor array from landmark's info. Caller takes ownership of returned object

Parameters:
aLandmark The landmark to get info of.
aFieldIds On return, landmark info field ids.
Returns:
The landmark's info as descriptor array

Definition at line 83 of file LandmarksInfoModel.cpp.

References AddCategoryFieldsL(), AddLocationFieldsL(), AddTextFieldL(), and iRealFormat.

00086     {
00087     TPtrC fieldValue;
00088     aFieldIds.Reset();
00089 
00090     const TInt KInfoArrayGranularity = 16;
00091     CDesCArray* infoArray = new (ELeave) CDesCArrayFlat(KInfoArrayGranularity);
00092 
00093     // Format landmark name
00094     fieldValue.Set(KNullDesC);
00095     aLandmark.GetLandmarkName(fieldValue);
00096 
00097     AddTextFieldL(ELandmarkNameField, fieldValue, *infoArray, aFieldIds);
00098 
00099     // Format description
00100     fieldValue.Set(KNullDesC);
00101     aLandmark.GetLandmarkDescription(fieldValue);
00102 
00103     AddTextFieldL(ELandmarkDescField, fieldValue, *infoArray, aFieldIds);
00104 
00105     // Format categories
00106     AddCategoryFieldsL(aLandmark, *infoArray, aFieldIds);
00107 
00108     // Format location fields
00109     TLocality location;
00110     aLandmark.GetPosition(location);
00111     AddLocationFieldsL(location, *infoArray, aFieldIds);
00112 
00113     // Format coverage Radius
00114     TReal32 coverageRadius;
00115     TBuf<KPosLmMaxTextFieldLength> radiusBuf;
00116     TInt res = aLandmark.GetCoverageRadius(coverageRadius);
00117     if (res != KErrNotFound)
00118         {
00119         radiusBuf.AppendNum(coverageRadius, iRealFormat);
00120         }
00121 
00122     AddTextFieldL(ELandmarkRadiusField, radiusBuf, *infoArray, aFieldIds);
00123 
00124     // Format street;
00125     fieldValue.Set(KNullDesC);
00126     aLandmark.GetPositionField(EPositionFieldStreet, fieldValue);
00127 
00128     AddTextFieldL(ELandmarkStreetField, fieldValue, *infoArray, aFieldIds);
00129 
00130     // Format postalCode;
00131     fieldValue.Set(KNullDesC);
00132     aLandmark.GetPositionField(EPositionFieldPostalCode, fieldValue);
00133 
00134     AddTextFieldL(ELandmarkPostalField, fieldValue, *infoArray, aFieldIds);
00135 
00136     // Format city;
00137     fieldValue.Set(KNullDesC);
00138     aLandmark.GetPositionField(EPositionFieldCity, fieldValue);
00139 
00140     AddTextFieldL(ELandmarkCityField, fieldValue, *infoArray, aFieldIds);
00141 
00142     // Format country
00143     fieldValue.Set(KNullDesC);
00144     aLandmark.GetPositionField(EPositionFieldCountry, fieldValue);
00145 
00146     AddTextFieldL(ELandmarkCountryField, fieldValue, *infoArray, aFieldIds);
00147     
00148     return infoArray;
00149     }

void CLandmarksInfoModel::AddInfoFieldL (  const TDesC &  aCaption,
const TDesC &  aText,
CDesCArray &  aArray,
RArray< TInt > &  aFieldIds
)  [private]
 

Adds new string describing landmark field to the info array. Adds also field's ID to array of field IDs.

Parameters:
aCaption The caption of the field
aText The value of the field
aArray Target array
aFieldIds Target field IDs array

void CLandmarksInfoModel::AddLocationFieldsL (  TLocality &  aLocation,
CDesCArray &  aArray,
RArray< TInt > &  aFieldIds
)  [private]
 

Adds location fields of the landmark to arrays.

Parameters:
aLocation contains the location data to update location fields with.
aArray Target array
aFieldIds Target field IDs array

Definition at line 188 of file LandmarksInfoModel.cpp.

References AddTextFieldL(), LandmarksUtils::FloatToDesL(), iRealFormat, and LandmarksUtils::LatLongFloatToDegMinSecDesL().

00192     {
00193     TBuf<KPosLmMaxTextFieldLength> fieldValue;
00194 
00195     // Format latitude in deg min sec format
00196     LandmarksUtils::LatLongFloatToDegMinSecDesL(aLocation.Latitude(), fieldValue);
00197     AddTextFieldL(ELandmarkLatitudeField, fieldValue, aArray, aFieldIds);
00198     fieldValue.Zero();
00199 
00200     // Format longitude in deg min sec format
00201     LandmarksUtils::LatLongFloatToDegMinSecDesL(aLocation.Longitude(), fieldValue);
00202     AddTextFieldL(ELandmarkLongitudeField, fieldValue, aArray, aFieldIds);
00203     fieldValue.Zero();
00204 
00205     // Format altitude
00206     LandmarksUtils::FloatToDesL(aLocation.Altitude(), fieldValue, iRealFormat);
00207     AddTextFieldL(ELandmarkAltitudeField, fieldValue, aArray, aFieldIds);
00208 
00209     // Format horizontal accuracy
00210     LandmarksUtils::FloatToDesL(aLocation.HorizontalAccuracy(), fieldValue, iRealFormat);
00211     AddTextFieldL(ELandmarkHorAccField, fieldValue, aArray, aFieldIds);
00212 
00213     // Format vertical accuracy
00214     LandmarksUtils::FloatToDesL(aLocation.VerticalAccuracy(), fieldValue, iRealFormat);
00215     AddTextFieldL(ELandmarkVerAccField, fieldValue, aArray, aFieldIds);
00216     }

void CLandmarksInfoModel::AddCategoryFieldsL (  CPosLandmark &  aLandmark,
CDesCArray &  aArray,
RArray< TInt > &  aFieldIds
)  [private]
 

Adds the category fields to arrays.

Parameters:
aLandmark used to retrieve category information
aArray Target array
aFieldIds Target field IDs array

Definition at line 224 of file LandmarksInfoModel.cpp.

References AddTextFieldL(), CLandmarksApplicationEngine::CategoryLC(), and iEngine.

00228     {
00229     RArray< TPosLmItemId > categories;
00230     CleanupClosePushL(categories);
00231     aLandmark.GetCategoriesL(categories);
00232     TInt nrOfCategories = categories.Count();
00233     
00234     for (TInt i = 0; i < nrOfCategories; i++)
00235         {
00236         TPtrC categoryName;
00237         CPosLandmarkCategory* category = iEngine.CategoryLC(categories[i]);
00238         category->GetCategoryName(categoryName);
00239 
00240         AddTextFieldL(ELandmarkCategoryField, categoryName, aArray, aFieldIds);
00241 
00242         CleanupStack::PopAndDestroy(category);
00243         }
00244 
00245     CleanupStack::PopAndDestroy(&categories);
00246     }

void CLandmarksInfoModel::AddTextFieldL (  TInt  aCaptionId,
TDesC &  aText,
CDesCArray &  aArray,
RArray< TInt > &  aFieldIds
)  [private]
 

Adds other text field and to arrays.

Parameters:
aCaptionId Caption string resource ID
aText The value of the field
aArray Target array
aFieldIds Target field IDs array

Definition at line 157 of file LandmarksInfoModel.cpp.

00162     {
00163     if (aText.Length())
00164         {
00165         HBufC* caption = CCoeEnv::Static()->
00166             AllocReadResourceAsDes16LC(KFieldCaptions[aFieldId]);
00167 
00168         const TInt KNumTabsAndOther = 10;        
00169         HBufC* item = HBufC::NewLC(
00170             caption->Length() + aText.Length() + KNumTabsAndOther); 
00171             
00172         _LIT(KItemFormat, "%S\t%S\t\t");
00173         item->Des().Format(KItemFormat, caption, &aText); 
00174         
00175         // append new item to the list
00176         aFieldIds.AppendL(aFieldId);
00177         aArray.AppendL(*item); 
00178         CleanupStack::PopAndDestroy(2, caption);
00179         }
00180     }


© Nokia 2006

Back to top