diff -r 8173571d354e -r 1fc85118c3ae locationlandmarksrefappfors60/Src/LandmarksCategoriesModel.cpp --- a/locationlandmarksrefappfors60/Src/LandmarksCategoriesModel.cpp Thu Aug 19 09:48:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,282 +0,0 @@ -/* -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Implements the CLandmarksCategoriesModel class and some help functions -* -*/ - - - -#include -#include -#include -#include - -#include - -#include -#include "LandmarksCommonData.h" -#include "LandmarksCategoriesModel.h" - -// ============================= LOCAL FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// DefaultIconIndex returns the icon index of the appropriate default icon. -// User defined categories have different default icons than global ones. -// -// Returns: an icon index -// Param: aCategory the category to investigate -// ----------------------------------------------------------------------------- -// -TInt DefaultIconIndex(CPosLandmarkCategory& aCategory) - { - // Global categories have different default icon than user-defined. - TBool isGlobal = aCategory.GlobalCategory() != KPosLmNullGlobalCategory; - - if (isGlobal) - { - return KDefaultGlobalIconIndex; - } - else - { - return KDefaultUserIconIndex; - } - } - -// ----------------------------------------------------------------------------- -// ResetAndDestroyIcons -// Resets and destroys an array of icons. This function is used as a -// TCleanupOperation. -// Params: aAny: The icons array to reset ands destroy -// ----------------------------------------------------------------------------- -// -void ResetAndDestroyIcons(TAny* aAny) - { - CIconList* icons = reinterpret_cast (aAny); - for (TInt i = 0; i < icons->Count(); i++) - { - delete &icons[i]; - } - icons->Reset(); - } - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -CLandmarksCategoriesModel::CLandmarksCategoriesModel() - { - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksCategoriesModel::ConstructL() - { - // The list box model uses MDesCArray interface class to take in text items. - iListItems = new(ELeave) CDesCArraySeg(KGranularity); - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -CLandmarksCategoriesModel* CLandmarksCategoriesModel::NewL() - { - CLandmarksCategoriesModel* self = - new (ELeave) CLandmarksCategoriesModel(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -CLandmarksCategoriesModel::~CLandmarksCategoriesModel() - { - delete iListItems; - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksCategoriesModel::SetItemIds(RArray* aItemIds) - { - iItemIds = aItemIds; - - // Empty descriptor model - iListItems->Reset(); - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -CDesCArraySeg* CLandmarksCategoriesModel::ItemList() - { - return iListItems; - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksCategoriesModel::SetCurrentItem(TInt aIndex) - { - iCurrentItem = aIndex; - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -TPosLmItemId CLandmarksCategoriesModel::CurrentItemId() - { - if (iCurrentItem < 0 || iCurrentItem > iItemIds->Count() - 1) - { - return KPosLmNullItemId; - } - - return (*iItemIds)[iCurrentItem]; - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -CIconList* CLandmarksCategoriesModel::CreateIconListL() - { - CIconList* iconList = new (ELeave) CArrayPtrFlat(KGranularity); - CleanupStack::PushL(TCleanupItem(ResetAndDestroyIcons, iconList)); - - // Create the global category icon consisting of its image and mask. - TAknsItemID aknsItemId ={0,0}; - CGulIcon* icon = AknsUtils::CreateGulIconL(NULL, aknsItemId, - KLandmarksMbmFileName, - EMbmLmrefappCategory_global, - EMbmLmrefappCategory_global_mask); - CleanupStack::PushL(icon); - icon->SetBitmapsOwnedExternally(EFalse); - iconList->AppendL(icon); - CleanupStack::Pop(icon); - - // Create the user defined category icon consisting of its image and mask. - icon = AknsUtils::CreateGulIconL(NULL, aknsItemId, - KLandmarksMbmFileName, - EMbmLmrefappCategory_user, - EMbmLmrefappCategory_user_mask); - CleanupStack::PushL(icon); - icon->SetBitmapsOwnedExternally(EFalse); - iconList->AppendL(icon); - CleanupStack::Pop(icon); - - CleanupStack::Pop(); // iconList - - // initialze iIconList. We don't need to delete any possible previous - // iIconList since ownership is transferred to calling object. - iIconList = iconList; - - return iconList; - } - -// ----------------------------------------------------------------------------- -// Refreshes a part of the model. Those categories that have been read from the -// database overwrites old categories. The model is refreshed incrementally -// from top to bottom. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CLandmarksCategoriesModel::RepopulateModelL( - CArrayPtr* aCategories) - { - TInt nrOfReadItems = aCategories->Count(); - - // Format and insert the read categories - for (TInt i = 0; i < nrOfReadItems; i++) - { - // Format name and icon - CPosLandmarkCategory* category = (*aCategories)[i]; - HBufC* formattedName = FormatListItemLC(*category); - - // Insert formatted descriptor into model - iListItems->AppendL(*formattedName); - - CleanupStack::PopAndDestroy(formattedName); - } - } - -// ----------------------------------------------------------------------------- -// Formats a list item to the following format "X\tcategoryName" -// where X = icon index -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -HBufC* CLandmarksCategoriesModel::FormatListItemLC(CPosLandmarkCategory& aCategory) - { - // Extract name - TPtrC name; - aCategory.GetCategoryName(name); - // 10 extra chars for icon index and column separator - const TInt KExtraChars = 10; - HBufC* formattedNameBuf = HBufC::NewLC(name.Length() + KExtraChars); - TPtr formattedNamePtr = formattedNameBuf->Des(); - - // Extract icon info - TPtrC mbmIconFile; - TInt iconIndex, maskIndex; - TInt res = aCategory.GetIcon(mbmIconFile, iconIndex, maskIndex); - - // Format list item - if (res == KErrNone) - { - // Create icon and append it to icon array. - TRAPD(err, AppendIconL(mbmIconFile, iconIndex, maskIndex)); - if (err == KErrNone) - { - // Append the array index where the icon is appended - formattedNamePtr.AppendNum(iIconList->Count() - 1); - } - else // Unable to create icon, use appropriate default icon. - { - formattedNamePtr.AppendNum(DefaultIconIndex(aCategory)); - } - } - else // res == KErrNotFound - { - formattedNamePtr.AppendNum(DefaultIconIndex(aCategory)); - } - formattedNamePtr.Append(KTab); - formattedNamePtr.Append(name); - - return formattedNameBuf; - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CLandmarksCategoriesModel::AppendIconL( - const TDesC& aMbmFile, - TInt aIconOffset, - TInt aMaskOffset) - { - TAknsItemID aknsItemId = {0,0}; - CGulIcon* icon = AknsUtils::CreateGulIconL(NULL, aknsItemId, - aMbmFile, - aIconOffset, - aMaskOffset); - CleanupStack::PushL(icon); - icon->SetBitmapsOwnedExternally(EFalse); - iIconList->AppendL(icon); - CleanupStack::Pop(icon); - } - -