diff -r 1fc85118c3ae -r 870918037e16 locationdataharvester/maptileservice/src/maptileservice.cpp --- a/locationdataharvester/maptileservice/src/maptileservice.cpp Tue Aug 31 15:09:25 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,394 +0,0 @@ -/* -* 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: -* Maptile service implementation -* -*/ - - -#include -#include -#include -#include -#include -#include "mylocationlogger.h" - -#include "maptileservice.h" -#include "maptiledblookuptable.h" -#include -// CONSTANTS -// Maptile interface uid -const TUid KUidMapTileInterface = { 0x2002E6E8 }; - -// Central Repository Key IDs -const TInt KEnableLocationFeature = 0x1; - -const char *MAPTILE_STATUS_RECEIVER = "/maptilestatuspublisher/name"; -const char *MAPTILE_STATUS_PUBLISHER = "/maptilecontactpublisher"; -const char *MAPTILE_STATUS_CALENDAR_PUBLISHER = "/maptilecalpublisher"; - - -// ----------------------------------------------------------------------------- -// MapTileService::MapTileService() -// Default constructor -// ----------------------------------------------------------------------------- -// -MapTileService::MapTileService():mCalPublisher(0) -{ - /* Constructs a QValueSpacePublisher that publishes values under path /mypublisher*/ - mPublisher = NULL; - mSubscriber = new QValueSpaceSubscriber( MAPTILE_STATUS_RECEIVER ); - //Connect for maptile status change key - QObject::connect(mSubscriber, SIGNAL(contentsChanged()), this, SLOT(setMaptileStatus())); - -} - -// ----------------------------------------------------------------------------- -// MapTileService::~MapTileService() -// Destructor -// ----------------------------------------------------------------------------- -// -MapTileService::~MapTileService() -{ - if( mSubscriber ) - { - delete mSubscriber; - mSubscriber = NULL; - } - - if( mPublisher ) - { - delete mPublisher; - mPublisher = NULL; - } - if( mCalPublisher ) - { - delete mCalPublisher; - mCalPublisher = NULL; - } -} -// ----------------------------------------------------------------------------- -// MapTileService::isLocationFeatureEnabled() -// Checks whether location feature is enabled or disabled -// ----------------------------------------------------------------------------- -// -bool MapTileService::isLocationFeatureEnabled(AppType appType) -{ - //Create the centrep with uid 0x2002C3A8 - bool enableLocationFeature = false; - - CRepository* centralRepository = NULL; - - TRAPD( err, centralRepository = CRepository::NewL( KUidMapTileInterface ) ); - if ( KErrNone == err ) - { - TInt repValue; - - //Get the Location feature flag - int ret=0; - if ( appType == AppTypeContacts ) - { - ret = centralRepository->Get( KEnableLocationFeature , repValue ); - } - else if ( appType == AppTypeCalendar ) - { - ret = centralRepository->Get( KEnableLocationFeature , repValue ); - } - - if ( ret == KErrNone && repValue == 1 ) - { - enableLocationFeature = true; - } - - delete centralRepository; - } - - return enableLocationFeature; - -} - - -// ----------------------------------------------------------------------------- -// MapTileService::getMapTileImage() -// Gets the maptile image path associated with a contact. -// ----------------------------------------------------------------------------- -// -int MapTileService::getMapTileImage( int id, AddressType sourceType, - QString& imagePath, Qt::Orientations orientation ) -{ - __TRACE_CALLSTACK; - - TLookupItem lookupItem; - - int addressCount = 0; - int maptileStatus = MapTileFetchingUnknownError; - - int error = readEntryFromMaptileDataBase( id, sourceType, lookupItem, addressCount ); - - //if entry available returns the file path otherwise NULL. - if ( KErrNone == error ) - { - - maptileStatus = lookupItem.iFetchingStatus; - MYLOCLOGSTRING1("getMapTileImage maptileStatus - %d ", maptileStatus ); - - if( maptileStatus == MapTileFetchingCompleted ) - { - //Get the image path - QString imageFile((QChar*)lookupItem.iFilePath.Ptr(), - lookupItem.iFilePath.Length()); - imagePath = imageFile; - - if( orientation == Qt::Vertical ) - { - imagePath.append( MAPTILE_IMAGE_PORTRAIT ); - } - else - { - if( sourceType == AddressPlain ) - { - imagePath.append( MAPTILE_IMAGE_CALENDAR ); - } - else if ( sourceType == AddressHome || - sourceType == AddressPreference || sourceType == AddressWork ) - { - imagePath.append( MAPTILE_IMAGE_CONTACT ); - } - imagePath.append( MAPTILE_IMAGE_LANDSCAPE ); - } - - //Check if file exist - if( !QFile::exists( imagePath ) ) - { - imagePath.clear(); - maptileStatus = MapTileFetchingUnknownError; - } - } - else if( maptileStatus == MapTileFetchingNetworkError || - maptileStatus == MapTileFetchingInProgress ) - { - switch(sourceType) - { - case AddressHome: - case AddressPreference: - case AddressWork: - { - publishValue( id, sourceType, addressCount ); - break; - } - - case AddressPlain: - { - publishCalEntry( id ); - break; - } - default: - break; - }; - - } - - - } - else if ( KErrNotFound == error ) - { - MYLOCLOGSTRING("getMapTileImage entry not found, return MapTileFetchingInProgress" ); - //If entry is not found , it will be a newly added entry. - switch (sourceType) { - case AddressHome: - case AddressPreference: - case AddressWork: - { - publishValue(id, sourceType, addressCount); - break; - } - - case AddressPlain: - { - publishCalEntry(id); - break; - } - default: - break; - }; - maptileStatus = MapTileFetchingInProgress; - } - - //Return the maptile status - MYLOCLOGSTRING("getMapTileImage returns MapTileFetchingUnknownError" ); - return maptileStatus; - -} - -// ----------------------------------------------------------------------------- -// MapTileService::setMaptileStatus() -// Gets call back from location engine , after maptile fetching done , -// to set status and emit signal . -// ----------------------------------------------------------------------------- -// -void MapTileService::setMaptileStatus() -{ - __TRACE_CALLSTACK; - QString imagePath; - AddressType addressType = AddressUnknown; - QStringList subPath = mSubscriber->subPaths(); - QVariant value = mSubscriber->value(subPath.at(0)); - - //Subscriber Protocol : [appid-addresstype-maptilestatus] - QStringList text = value.toString().split("-"); - - int id = text.at(0).toInt(); - int status = text.at(2).toInt(); - - switch( text.at(1).toInt() ) - { - case ESourceContactsPref: - addressType = AddressPreference; - break; - case ESourceContactsWork: - addressType = AddressWork; - break; - case ESourceContactsHome: - addressType = AddressHome; - break; - case ESourceCalendar: - addressType = AddressPlain; - break; - default: - break; - } - - //Emit the maptile status signal - int type = addressType; - MYLOCLOGSTRING1("setMaptileStatus() status - %d ", addressType ); - if( mLastViewedEntryId == id ) - { - emit maptileFetchingStatusUpdate( mLastViewedEntryId, type , status ); - } - -} - -// ----------------------------------------------------------------------------- -// MapTileService::publishValue() -// publish the contact entry -// ----------------------------------------------------------------------------- -// -void MapTileService::publishValue( int id, AddressType sourceType, int addressCount ) -{ - __TRACE_CALLSTACK; - mLastViewedEntryId = id; - - int addressType = ESourceInvalid; - switch( sourceType ) - { - case AddressPreference: - addressType = ESourceContactsPref; - break; - case AddressWork: - addressType = ESourceContactsWork; - break; - case AddressHome: - addressType = ESourceContactsHome; - break; - } - - if ( !mPublisher ) - { - /* Constructs a QValueSpacePublisher that publishes values under path /mypublisher*/ - mPublisher = new QValueSpacePublisher( MAPTILE_STATUS_PUBLISHER, this); - } - - - /* Publisher protocol [appid-addresstype-count] */ - QString addressId; - addressId.append( QVariant(id).toString()); - addressId.append( QChar('-') ); - addressId.append( QVariant(addressType).toString()); - addressId.append( QChar('-') ); - addressId.append( QVariant(addressCount).toString() ); - mPublisher->setValue("name", addressId.toAscii() ); - mPublisher->sync(); - -} - -// ----------------------------------------------------------------------------- -// MapTileService::publishValue() -// publish the calendar entry -// ----------------------------------------------------------------------------- -// -void MapTileService::publishCalEntry( int id) -{ - __TRACE_CALLSTACK; - mLastViewedEntryId = id; - if ( NULL ==mCalPublisher ) - { - /* Constructs a QValueSpacePublisher that publishes values under path /mypublisher*/ - mCalPublisher = new QValueSpacePublisher( MAPTILE_STATUS_CALENDAR_PUBLISHER, this); - } - mCalPublisher->setValue("name", id); - mCalPublisher->sync(); -} - -// ----------------------------------------------------------------------------- -// MapTileService::readEntryFromMaptileDataBase() -// Read all entries from database -// ----------------------------------------------------------------------------- -// -int MapTileService::readEntryFromMaptileDataBase( - int id, AddressType sourceType, TLookupItem& aLookupItem, int& aNoOfAddress ) -{ - - //Maptile database instance - CLookupMapTileDatabase* mapTileDatabase = NULL; - - TRAPD( err, mapTileDatabase = CLookupMapTileDatabase::NewL( - KMapTileLookupDatabaseName ) ); - - if ( KErrNone == err ) - { - TRAP( err,aNoOfAddress = mapTileDatabase->FindNumberOfAddressL(id) ); - MYLOCLOGSTRING1("no of address FindNumberOfAddressL returns - %d ", err ); - if ( KErrNone == err ) - { - aLookupItem.iUid = id; - switch (sourceType) - { - case AddressPlain: - aLookupItem.iSource = ESourceCalendar; - break; - case AddressPreference: - aLookupItem.iSource = ESourceContactsPref; - break; - case AddressWork: - aLookupItem.iSource = ESourceContactsWork; - break; - case AddressHome: - aLookupItem.iSource = ESourceContactsHome; - break; - default: - break; - } - - TRAP( err , mapTileDatabase->FindEntryL( aLookupItem ) ); - - MYLOCLOGSTRING1("getMapTileImage FindEntryL returns - %d ", err ); - } - //delet the database instance - delete mapTileDatabase; - - } - - return err; -} -// End of file