diff -r 8173571d354e -r 1fc85118c3ae locationpickerservice/src/locationpickerdatamanager_p.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationpickerservice/src/locationpickerdatamanager_p.cpp Tue Aug 31 15:09:25 2010 +0300 @@ -0,0 +1,339 @@ +/* +* Copyright (c) 2010 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: LocationPickerDataManager private implementation +* +*/ + +#include +#include +#include +#include "locationpickerdatamanager_p.h" + + +// ---------------------------------------------------------------------------- +// LocationPickerDataManagerPrivate::LocationPickerDataManagerPrivate() +// ---------------------------------------------------------------------------- + +LocationPickerDataManagerPrivate::LocationPickerDataManagerPrivate() : + mModel( NULL ), + mViewType( ELocationPickerContent ), + mDb( NULL ) +{ + mDb = new LocationDataLookupDb(); + mDb->open(); +} + + +// ---------------------------------------------------------------------------- +// LocationPickerDataManagerPrivate::~LocationPickerDataManagerPrivate() +// ---------------------------------------------------------------------------- +LocationPickerDataManagerPrivate::~LocationPickerDataManagerPrivate() +{ + // delete the member variables; + if( mDb ) + { + mDb->close(); + delete mDb; + mDb = NULL; + } +} + +// ---------------------------------------------------------------------------- +// LocationPickerDataManagerPrivate::populateModel() +// ---------------------------------------------------------------------------- +bool LocationPickerDataManagerPrivate::populateModel( QStandardItemModel &aModel, + TViewType aViewType, quint32 aCollectionId ) +{ + mModel = &aModel; + mViewType = aViewType; + + if( !mDb ) + { + // no items in the landmark database, so return false. + return false; + } + + switch( mViewType ) + { + case ELocationPickerContent: + case ELocationPickerSearchView: + { + QList itemArray; + mDb->getEntries( itemArray ); + return populateLandmarks( itemArray ); + } + + case ELocationPickerCollectionListContent: + { + QList aCount; + mDb->getCount(aCount, aCollectionId); + populateCollections(aCount); + return true; + } + case ELocationPickerCollectionContent: + { + QList itemArray; + mDb->getEntries( itemArray, aCollectionId ); + if( itemArray.count() == 0 ) + return false; + + return populateLandmarks( itemArray ); + } + } + return true; +} + +// ---------------------------------------------------------------------------- +// LocationPickerDataManagerPrivate::populateLandmarks() +// ---------------------------------------------------------------------------- + +bool LocationPickerDataManagerPrivate::populateLandmarks( QList &aItemArray ) +{ + mModel->clear(); + + if( !aItemArray.count() ) + { + return false; + } + QString lmAddressLine1; + QString lmAddressLine2; + QString contextAddress; + QString contextAddressCountry; + + for( int i = 0; i < aItemArray.count(); i++ ) + { + contextAddress.clear(); + contextAddressCountry.clear(); + lmAddressLine1.clear(); + lmAddressLine2.clear(); + + if( !aItemArray[i].mIsDuplicate ) + { + lmAddressLine1 = aItemArray[i].mName; + + bool addressEmtpy = true; // used to check if address line 2 is empty + if( !aItemArray[i].mStreet.isEmpty() ) + { + if( lmAddressLine1.isEmpty() ) + { + lmAddressLine1 = aItemArray[i].mStreet; + } + else + { + lmAddressLine2 = aItemArray[i].mStreet; + addressEmtpy = EFalse; + } + } + if( !aItemArray[i].mCity.isEmpty() ) + { + if( lmAddressLine1.isEmpty() ) + { + lmAddressLine1 = aItemArray[i].mCity; + } + else + { + if( !addressEmtpy ) + { + lmAddressLine2 = lmAddressLine2 + KSeparator; + lmAddressLine2 = lmAddressLine2 + KSpace; + lmAddressLine2 = lmAddressLine2 + aItemArray[i].mCity; + } + else + { + lmAddressLine2 = aItemArray[i].mCity; + addressEmtpy = EFalse; + } + } + } + if( !aItemArray[i].mState.isEmpty() ) + { + if( lmAddressLine1.isEmpty() ) + { + lmAddressLine1 = aItemArray[i].mState; + } + else + { + if( !addressEmtpy ) + { + lmAddressLine2 = lmAddressLine2 + KSeparator; + lmAddressLine2 = lmAddressLine2 + KSpace; + lmAddressLine2 = lmAddressLine2 + aItemArray[i].mState; + } + else + { + lmAddressLine2 = aItemArray[i].mState; + addressEmtpy = EFalse; + } + } + } + contextAddress = lmAddressLine2; + if( !aItemArray[i].mCountry.isEmpty() ) + { + if( !addressEmtpy ) + { + lmAddressLine2 = lmAddressLine2 + KSeparator; + lmAddressLine2 = lmAddressLine2 + KSpace; + lmAddressLine2 = lmAddressLine2 + aItemArray[i].mCountry; + } + else + { + lmAddressLine2 = aItemArray[i].mCountry; + addressEmtpy = EFalse; + } + contextAddressCountry = aItemArray[i].mCountry; + } + // set icons based on contact address type + QVariantList icons; + HbIcon adressTypeIcon; + HbIcon potraitIcon; + QString adressType; + bool adressIconPresent = false; + if( aItemArray[i].mSourceType == ESourceContactsHome ) + { + adressTypeIcon = HbIcon(KContactHomeIcon); + adressType = KContactHomeIcon; + adressIconPresent = true; + } + else if( aItemArray[i].mSourceType == ESourceContactsWork ) + { + adressTypeIcon = HbIcon(KContactWorkIcon); + adressType = KContactWorkIcon; + adressIconPresent = true; + } + + if( aItemArray[i].mSourceType == ESourceCalendar ) + { + potraitIcon = HbIcon( KCalendarImage ); + } + else if( aItemArray[i].mSourceType == ESourceContactsWork || aItemArray[i].mSourceType + == ESourceContactsHome || aItemArray[i].mSourceType == ESourceContactsPref ) + { + potraitIcon = HbIcon( KContactsImage ); + } + else + { + potraitIcon = HbIcon( KDummyImage ); + } + + // create a list item and set to model + QStringList addressData; + QString landscapeIconPath; + + if( QFile::exists( aItemArray[i].mMapTilePath ) ) + { + //draw maptile Icon + landscapeIconPath = QString( aItemArray[i].mMapTilePath ); + } + else + { + //draw dummy icon + landscapeIconPath = QString(""); + } + addressData.clear(); + icons<setData(QVariant(addressData), Qt::DisplayRole); + modelItem->setData( icons, Qt::DecorationRole ); + modelItem->setData( aItemArray[i].mId, Qt::UserRole ); + modelItem->setData(landscapeIconPath,Qt::UserRole+1); + modelItem->setData(adressType,Qt::UserRole+2); + modelItem->setData(QVariant(contextList), Qt::UserRole+3); + + mModel->appendRow( modelItem ); + } + } + + return true; +} + +// ---------------------------------------------------------------------------- +// LocationPickerDataManagerPrivate::populateCollections() +// ---------------------------------------------------------------------------- + +void LocationPickerDataManagerPrivate::populateCollections(QList& aCount) +{ + // add contact collection + QStandardItem *modelItemContact = new QStandardItem(); + int conNum = aCount.value(0); + QString contactCollectionNum(hbTrId("txt_lint_list_ln_items",conNum)); + QString contactCollectionName( hbTrId("txt_lint_list_contact_addresses") ); + + + QStringList contact = (QStringList()<setData( QVariant( contact ), Qt::DisplayRole ); + + modelItemContact->setData( HbIcon ( KCollectionsContacts ), Qt::DecorationRole ); + modelItemContact->setData( ESourceLandmarksContactsCat, Qt::UserRole ); + mModel->appendRow( modelItemContact ); + + //txt_lint_list_calender_addresses + int calNum = aCount.value(1); + QString calendarCollectionNum(hbTrId("txt_lint_list_ln_items",calNum)); + QString calendarCollectionName( hbTrId("txt_lint_list_calendar_locations") ); + QStringList calender = (QStringList()<setData( QVariant( calender ), Qt::DisplayRole ); + modelItemCalendar->setData( HbIcon ( KCollectionsCalendar ), Qt::DecorationRole ); + modelItemCalendar->setData( ESourceLandmarksCalendarCat, Qt::UserRole ); + mModel->appendRow( modelItemCalendar ); + + //txt_lint_list_places_addresses + int placNum = aCount.value(2); + QString placesCollectionNum(hbTrId("txt_lint_list_ln_items",placNum)); + QString placesCollectionName( hbTrId("txt_lint_list_places") ); + QStringList places = (QStringList()<setData( QVariant( places ), Qt::DisplayRole ); + modelItemPlaces->setData( HbIcon (KCollectionsPlaces), Qt::DecorationRole ); + modelItemPlaces->setData( ESourceLandmarks, Qt::UserRole ); + mModel->appendRow( modelItemPlaces ); +} + + +// ---------------------------------------------------------------------------- +// LocationPickerDataManagerPrivate::getLocationItem() +// ---------------------------------------------------------------------------- + +void LocationPickerDataManagerPrivate::getLocationItem( quint32 aId, QLocationPickerItem& aItem ) +{ + QLookupItem item; + item.mId = aId; + if( mDb->findEntryById( item ) ) + { + aItem.mName = item.mName; + aItem.mStreet = item.mStreet; + aItem.mPostalCode = item.mPostalCode; + aItem.mCity = item.mCity; + aItem.mState = item.mState; + aItem.mCountry = item.mCountry; + aItem.mLatitude = item.mLatitude; + aItem.mLongitude = item.mLongitude; + aItem.mIsValid = true; + } + else + { + aItem.mIsValid = false; + } + +} +