--- a/phonebookengines/cntmaptileservice/src/cntmaptileservice.cpp Wed Aug 18 09:39:00 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,315 +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 "cntmaptileservice.h"
-#include "cntmaptiledblookuptable.h"
-
-// CONSTANTS
-// Maptile interface uid
-const TUid KUidMapTileInterface = { 0x2002C3A8 };
-// Central Repository Key IDs
-const TInt KEnableLocationFeature = 0x1;
-
-const char *CNT_MAPTILE_STATUS_RECEIVER = "/maptilestatuspublisher/name";
-const char *CNT_MAPTILE_STATUS_PUBLISHER = "/cntmaptilepublisher";
-
-const char* CNT_PORTRAIT_MAPTILE_IMAGE = "_Vertical";
-const char* CNT_LANDSCAPE_MAPTILE_IMAGE = "_Contact_Horizontal";
-
-// -----------------------------------------------------------------------------
-// CntMapTileService::CntMapTileService()
-// Default constructor
-// -----------------------------------------------------------------------------
-//
-CntMapTileService::CntMapTileService()
-{
- //publisher
- mPublisher = NULL;
-
- //subscriber
- mSubscriber = new QValueSpaceSubscriber( CNT_MAPTILE_STATUS_RECEIVER );
- //Connect for maptile status change key
- QObject::connect(mSubscriber, SIGNAL(contentsChanged()), this, SLOT(setMaptileStatus()));
-
-}
-
-
-// -----------------------------------------------------------------------------
-// CntMapTileService::~CntMapTileService()
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CntMapTileService::~CntMapTileService()
-{
- if( mSubscriber )
- {
- delete mSubscriber;
- mSubscriber = NULL;
- }
-
- if( mPublisher )
- {
- delete mPublisher;
- mPublisher = NULL;
- }
-}
-// -----------------------------------------------------------------------------
-// CntMapTileService::isLocationFeatureEnabled()
-// Checks whether location feature is enabled or disabled
-// -----------------------------------------------------------------------------
-//
-bool CntMapTileService::isLocationFeatureEnabled()
-{
- //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
- TInt ret = centralRepository->Get( KEnableLocationFeature , repValue );
-
- if ( ret == KErrNone && repValue == 1 )
- {
- enableLocationFeature = true;
- }
-
- delete centralRepository;
- }
-
- return enableLocationFeature;
-
-}
-
-
-// -----------------------------------------------------------------------------
-// CntMapTileService::getMapTileImage()
-// Gets the maptile image path associated with a contact.
-// -----------------------------------------------------------------------------
-//
-int CntMapTileService::getMapTileImage(
- int contactId ,
- ContactAddressType sourceType,
- QString& imagePath,
- Qt::Orientations orientation )
-{
-
- TLookupItem lookupItem;
-
- int addressCount = 0;
- int maptileStatus = MapTileFetchingUnknownError;
-
- //Read the entry from maptile database
- int error = readEntryFromMaptileDataBase( contactId, sourceType, lookupItem, addressCount );
-
- //if entry available returns the file path otherwise NULL.
- if ( KErrNone == error )
- {
- maptileStatus = lookupItem.iFetchingStatus;
-
- if( maptileStatus == MapTileFetchingCompleted )
- {
- //Get the image path
- QString imageFile((QChar*)lookupItem.iFilePath.Ptr(),
- lookupItem.iFilePath.Length());
- if( orientation == Qt::Vertical )
- {
- imageFile.append( CNT_PORTRAIT_MAPTILE_IMAGE );
- }
- else
- {
- imageFile.append( CNT_LANDSCAPE_MAPTILE_IMAGE );
- }
- imagePath = imageFile;
-
- //Check if File exists
- if ( !QFile::exists( imagePath ) )
- {
- imagePath.clear();
- maptileStatus = MapTileFetchingUnknownError;
- }
- }
- else if( maptileStatus == MapTileFetchingNetworkError ||
- maptileStatus == MapTileFetchingInProgress )
- {
- //Publish the contact id for maptile processing
- publishValue( contactId, sourceType, addressCount );
- }
-
- }
- else if ( KErrNotFound == error )
- {
- //If entry is not found , it will be a newly added entry.
- publishValue( contactId, sourceType, addressCount );
- maptileStatus = MapTileFetchingInProgress;
- }
-
- //Return the maptile status
- return maptileStatus;
-}
-
-
-// -----------------------------------------------------------------------------
-// CntMapTileService::setMaptileStatus()
-// Emits the maptile status changed event to contact application
-// -----------------------------------------------------------------------------
-//
-void CntMapTileService::setMaptileStatus()
-{
- QString imagePath;
- ContactAddressType addressType = AddressPreference;
-
- QStringList subPath = mSubscriber->subPaths();
- QVariant value = mSubscriber->value(subPath.at(0));
-
- //Subscriber Protocol : [contactid-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;
- default:
- break;
- }
-
- //Emit the maptile status signal
- int type = addressType;
- if( mLastViewedContactId == id )
- {
- emit maptileFetchingStatusUpdate( mLastViewedContactId, type , status );
- }
-}
-
-
-// -----------------------------------------------------------------------------
-// CntMapTileService::publishValue()
-// Publish the the contact id and address for which maptile to be processed.
-// -----------------------------------------------------------------------------
-//
-void CntMapTileService::publishValue( int id, ContactAddressType sourceType, int addressCount )
-{
-
- mLastViewedContactId = 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( CNT_MAPTILE_STATUS_PUBLISHER, this);
- }
-
- /* Publisher protocol [appid-addresstype-count] */
- mContactEntryInfo.clear();
- mContactEntryInfo.append( QVariant(id).toString());
- mContactEntryInfo.append( QChar('-') );
- mContactEntryInfo.append( QVariant(addressType).toString());
- mContactEntryInfo.append( QChar('-') );
- mContactEntryInfo.append( QVariant(addressCount).toString() );
-
- mPublisher->setValue("name", mContactEntryInfo.toAscii() );
- mPublisher->sync();
-
-}
-
-// -----------------------------------------------------------------------------
-// CntMapTileService::readEntryFromMaptileDataBase()
-// Read the entry from maptile database
-// -----------------------------------------------------------------------------
-//
-int CntMapTileService::readEntryFromMaptileDataBase(
- int id, ContactAddressType sourceType, TLookupItem& aLookupItem, int& aNoOfAddress )
-{
-
- //Maptile database instance
- CLookupMapTileDatabase* mapTileDatabase = NULL;
-
- TRAPD( err, mapTileDatabase = CLookupMapTileDatabase::NewL(
- KMapTileLookupDatabaseName ) );
-
- if ( KErrNone == err )
- {
- int appId = id;
- TRAP( err, aNoOfAddress = mapTileDatabase->FindNumberOfAddressL(appId) );
-
- if( err != KErrNone )
- {
- aNoOfAddress = 0;
- }
-
- aLookupItem.iUid = id;
- switch( sourceType )
- {
- 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 ) );
-
- //delet the database instance
- delete mapTileDatabase;
-
- }
-
- return err;
-}
-
-// End of file
-