--- 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 <centralrepository.h>
-#include <locationservicedefines.h>
-#include <qvaluespacepublisher.h>
-#include <qvaluespacesubscriber.h>
-#include <qfile.h>
-#include "mylocationlogger.h"
-
-#include "maptileservice.h"
-#include "maptiledblookuptable.h"
-#include <QVariant>
-// 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