Revision: 201037 default PDK_4.0.a
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 04 Oct 2010 00:10:56 +0300
changeset 41 b3dd5ec3089d
parent 38 793f76d9ab0c
Revision: 201037 Kit: 201039
location_plat/location_data_harvester_api/bld.inf
location_plat/location_data_harvester_api/inc/locationdatalookupdb.h
location_plat/location_data_harvester_api/inc/locationservicedefines.h
location_plat/location_picker_service_api/bld.inf
location_plat/location_plat.pro
locationdataharvester/bwins/locationdatalookupdbu.def
locationdataharvester/bwins/maptileserviceu.def
locationdataharvester/bwins/mylocationsdatabasemanageru.def
locationdataharvester/eabi/locationdatalookupdbu.def
locationdataharvester/eabi/maptileserviceu.def
locationdataharvester/eabi/mylocationsdatabasemanageru.def
locationdataharvester/geocodeupdate/geocodeupdate.pro
locationdataharvester/geocodeupdate/src/geocodeupdate.cpp
locationdataharvester/inc/mylocationsdefines.h
locationdataharvester/locationdataharvester.pro
locationdataharvester/locationdatalookupdb/locationdatalookupdb.cpp
locationdataharvester/locationdatalookupdb/locationdatalookupdb.pro
locationdataharvester/maptileservice/conf/maptileservice.confml
locationdataharvester/maptileservice/conf/maptileservice_2002E6E8.crml
locationdataharvester/maptileservice/inc/maptiledblookuptable.h
locationdataharvester/maptileservice/inc/maptileservice.h
locationdataharvester/maptileservice/maptileservice.pro
locationdataharvester/maptileservice/src/maptiledblookuptable.cpp
locationdataharvester/maptileservice/src/maptileservice.cpp
locationdataharvester/mylocationsdatabasemanager/inc/mylocationsdatabasemanager.h
locationdataharvester/mylocationsdatabasemanager/mylocationsdatabasemanager.pro
locationdataharvester/mylocationsdatabasemanager/src/mylocationsdatabasemanager.cpp
locationdataharvester/mylocationsengine/inc/lookupmaptiledb.h
locationdataharvester/mylocationsengine/inc/mylocationsengine.h
locationdataharvester/mylocationsengine/mylocationsengine.pro
locationdataharvester/mylocationsengine/src/lookupmaptiledb.cpp
locationdataharvester/mylocationsengine/src/maptileinterface.cpp
locationdataharvester/mylocationsengine/src/mylocationsengine.cpp
locationpickerservice/inc/locationpickersearchview.h
locationpickerservice/inc/locationpickertypes.h
locationpickerservice/locationpickerservice.pro
locationpickerservice/resources/location.hgmediawall.widgetml
locationpickerservice/rom/locationpickerservice.iby
locationpickerservice/rom/locationpickerservice_resources.iby
locationpickerservice/src/hgwidgetdatamodel.cpp
locationpickerservice/src/locationpickerappwindow.cpp
locationpickerservice/src/locationpickerdatamanager_p.cpp
locationpickerservice/src/locationpickersearchview.cpp
locationpickerservice/src/locationpickerview.cpp
package_definition.xml
package_map.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/location_plat/location_data_harvester_api/bld.inf	Mon Oct 04 00:10:56 2010 +0300
@@ -0,0 +1,25 @@
+/*
+* 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:  Location data harvester api build file
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+inc\maptilegeocoderplugin.h     APP_LAYER_PLATFORM_EXPORT_PATH(maptilegeocoderplugin.h)
+inc\maptilegeocoderplugin.inl    APP_LAYER_PLATFORM_EXPORT_PATH(maptilegeocoderplugin.inl)
+inc\locationdatalookupdb.h    APP_LAYER_PLATFORM_EXPORT_PATH(locationdatalookupdb.h)
+inc\locationservicedefines.h   APP_LAYER_PLATFORM_EXPORT_PATH(locationservicedefines.h)
\ No newline at end of file
--- a/location_plat/location_data_harvester_api/inc/locationdatalookupdb.h	Thu Sep 02 20:20:42 2010 +0300
+++ b/location_plat/location_data_harvester_api/inc/locationdatalookupdb.h	Mon Oct 04 00:10:56 2010 +0300
@@ -108,6 +108,18 @@
 };
 
 /**
+* Location data for calendar specific.
+*/
+class QCalendarLocationDetails
+{
+public:
+    // Uid of the source entry
+    quint32 mSourceUid;
+    //One line address
+    QString mOnelineLocation;
+};
+
+/**
 * Location data lookup database class.
 */
 class DLL_EXPORT LocationDataLookupDb : public QObject
@@ -218,13 +230,31 @@
     QString getAddressDetails( quint32 mId , quint32 mSourceType );
     
     /**
-    * Gets single line address
+    * Updates the entry name 
     * @param id , id of the entry
     * @param sourceType , type of entry
     * @param name , name of entry
     */
     void updateEntryNameByIdAndType(quint32 id, quint32 sourceType , QString name);
     
+    /**
+    * Updates the calendar entry  
+    * @param id , id of the calendar entry
+    * @param location , location  
+    */
+   void updateCalendarLocationById(quint32 id,QString location);    
+   
+    /**
+    * Delete the calendar entry  
+    * @param id , id of the calendar entry
+    */
+   void deleteCalendarEntry(quint32 id); 
+   /**
+    * gets all the calendar entry  
+    * @param lookupItemArray , refference to all entry
+    */
+   void getAllCalendarEntry(QList<QCalendarLocationDetails>& lookupItemArray);
+    
 private:
 	
     // fills the lookup entry
--- a/location_plat/location_data_harvester_api/inc/locationservicedefines.h	Thu Sep 02 20:20:42 2010 +0300
+++ b/location_plat/location_data_harvester_api/inc/locationservicedefines.h	Mon Oct 04 00:10:56 2010 +0300
@@ -18,6 +18,31 @@
 
 #ifndef LOCATIONSERVICEDEFINES_H
 #define LOCATIONSERVICEDEFINES_H
+#include <QString>
+
+/**
+ * MaptileLookupItem struct.
+ * This structure defines a maptile lookup item.
+ */
+
+class MaptileLookupItem
+{
+public:
+    // Uid of the source entry
+    quint32 iUid;
+
+    // Source type
+    quint32 iSource;
+   
+    // File Path
+    QString iFilePath;
+    
+    // map tile fetching status
+    quint32 iFetchingStatus;
+    
+    // user setting status
+    bool iUserSetting;
+};
 
 /** Defines uid source type
  */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/location_plat/location_picker_service_api/bld.inf	Mon Oct 04 00:10:56 2010 +0300
@@ -0,0 +1,22 @@
+/*
+* 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:  Location picker service api build file
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+inc/qlocationpickeritem.h     APP_LAYER_PLATFORM_EXPORT_PATH(qlocationpickeritem.h)
--- a/location_plat/location_plat.pro	Thu Sep 02 20:20:42 2010 +0300
+++ b/location_plat/location_plat.pro	Mon Oct 04 00:10:56 2010 +0300
@@ -27,3 +27,6 @@
 
 
 #BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include \"group/bld.inf\""
+
+
+symbian:MMP_RULES += SMPSAFE
--- a/locationdataharvester/bwins/locationdatalookupdbu.def	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/bwins/locationdatalookupdbu.def	Mon Oct 04 00:10:56 2010 +0300
@@ -1,20 +1,23 @@
 EXPORTS
 	?updateMaptileBySourceIdAndType@LocationDataLookupDb@@QAEXIIVQString@@@Z @ 1 NONAME ; void LocationDataLookupDb::updateMaptileBySourceIdAndType(unsigned int, unsigned int, class QString)
-	?getAddressDetails@LocationDataLookupDb@@QAE?AVQString@@II@Z @ 2 NONAME ; class QString LocationDataLookupDb::getAddressDetails(unsigned int, unsigned int)
-	?deleteEntryBySourceIdAndType@LocationDataLookupDb@@QAEXABVQLookupItem@@@Z @ 3 NONAME ; void LocationDataLookupDb::deleteEntryBySourceIdAndType(class QLookupItem const &)
-	?updateEntryBySourceIdAndType@LocationDataLookupDb@@QAEXABVQLookupItem@@@Z @ 4 NONAME ; void LocationDataLookupDb::updateEntryBySourceIdAndType(class QLookupItem const &)
-	?getEntries@LocationDataLookupDb@@QAEXAAV?$QList@VQLookupItem@@@@I@Z @ 5 NONAME ; void LocationDataLookupDb::getEntries(class QList<class QLookupItem> &, unsigned int)
-	?updateEntryById@LocationDataLookupDb@@QAEXABVQLookupItem@@@Z @ 6 NONAME ; void LocationDataLookupDb::updateEntryById(class QLookupItem const &)
-	??0LocationDataLookupDb@@QAE@PAVQObject@@@Z @ 7 NONAME ; LocationDataLookupDb::LocationDataLookupDb(class QObject *)
-	?getCount@LocationDataLookupDb@@QAEXAAV?$QList@H@@I@Z @ 8 NONAME ; void LocationDataLookupDb::getCount(class QList<int> &, unsigned int)
-	?findEntryBySourceIdAndType@LocationDataLookupDb@@QAE_NAAVQLookupItem@@@Z @ 9 NONAME ; bool LocationDataLookupDb::findEntryBySourceIdAndType(class QLookupItem &)
-	??1LocationDataLookupDb@@UAE@XZ @ 10 NONAME ; LocationDataLookupDb::~LocationDataLookupDb(void)
-	?findEntriesByLandmarkId@LocationDataLookupDb@@QAEXIAAV?$QList@VQLookupItem@@@@@Z @ 11 NONAME ; void LocationDataLookupDb::findEntriesByLandmarkId(unsigned int, class QList<class QLookupItem> &)
-	?close@LocationDataLookupDb@@QAEXXZ @ 12 NONAME ; void LocationDataLookupDb::close(void)
-	?createEntry@LocationDataLookupDb@@QAEXAAVQLookupItem@@@Z @ 13 NONAME ; void LocationDataLookupDb::createEntry(class QLookupItem &)
-	?findEntryById@LocationDataLookupDb@@QAE_NAAVQLookupItem@@@Z @ 14 NONAME ; bool LocationDataLookupDb::findEntryById(class QLookupItem &)
-	?fillLookupEntry@LocationDataLookupDb@@AAEXAAVQSqlQuery@@AAVQLookupItem@@@Z @ 15 NONAME ; void LocationDataLookupDb::fillLookupEntry(class QSqlQuery &, class QLookupItem &)
-	?open@LocationDataLookupDb@@QAE_NXZ @ 16 NONAME ; bool LocationDataLookupDb::open(void)
-	??_ELocationDataLookupDb@@UAE@I@Z @ 17 NONAME ; LocationDataLookupDb::~LocationDataLookupDb(unsigned int)
-	?updateEntryNameByIdAndType@LocationDataLookupDb@@QAEXIIVQString@@@Z @ 18 NONAME ; void LocationDataLookupDb::updateEntryNameByIdAndType(unsigned int, unsigned int, class QString)
+	?getEntries@LocationDataLookupDb@@QAEXAAV?$QList@VQLookupItem@@@@I@Z @ 2 NONAME ; void LocationDataLookupDb::getEntries(class QList<class QLookupItem> &, unsigned int)
+	?updateEntryById@LocationDataLookupDb@@QAEXABVQLookupItem@@@Z @ 3 NONAME ; void LocationDataLookupDb::updateEntryById(class QLookupItem const &)
+	?updateCalendarLocationById@LocationDataLookupDb@@QAEXIVQString@@@Z @ 4 NONAME ; void LocationDataLookupDb::updateCalendarLocationById(unsigned int, class QString)
+	?findEntriesByLandmarkId@LocationDataLookupDb@@QAEXIAAV?$QList@VQLookupItem@@@@@Z @ 5 NONAME ; void LocationDataLookupDb::findEntriesByLandmarkId(unsigned int, class QList<class QLookupItem> &)
+	?deleteCalendarEntry@LocationDataLookupDb@@QAEXI@Z @ 6 NONAME ; void LocationDataLookupDb::deleteCalendarEntry(unsigned int)
+	?fillLookupEntry@LocationDataLookupDb@@AAEXAAVQSqlQuery@@AAVQLookupItem@@@Z @ 7 NONAME ; void LocationDataLookupDb::fillLookupEntry(class QSqlQuery &, class QLookupItem &)
+	?open@LocationDataLookupDb@@QAE_NXZ @ 8 NONAME ; bool LocationDataLookupDb::open(void)
+	?deleteEntryBySourceIdAndType@LocationDataLookupDb@@QAEXABVQLookupItem@@@Z @ 9 NONAME ; void LocationDataLookupDb::deleteEntryBySourceIdAndType(class QLookupItem const &)
+	?getAddressDetails@LocationDataLookupDb@@QAE?AVQString@@II@Z @ 10 NONAME ; class QString LocationDataLookupDb::getAddressDetails(unsigned int, unsigned int)
+	?updateEntryBySourceIdAndType@LocationDataLookupDb@@QAEXABVQLookupItem@@@Z @ 11 NONAME ; void LocationDataLookupDb::updateEntryBySourceIdAndType(class QLookupItem const &)
+	??0LocationDataLookupDb@@QAE@PAVQObject@@@Z @ 12 NONAME ; LocationDataLookupDb::LocationDataLookupDb(class QObject *)
+	?findEntryBySourceIdAndType@LocationDataLookupDb@@QAE_NAAVQLookupItem@@@Z @ 13 NONAME ; bool LocationDataLookupDb::findEntryBySourceIdAndType(class QLookupItem &)
+	?getCount@LocationDataLookupDb@@QAEXAAV?$QList@H@@I@Z @ 14 NONAME ; void LocationDataLookupDb::getCount(class QList<int> &, unsigned int)
+	??1LocationDataLookupDb@@UAE@XZ @ 15 NONAME ; LocationDataLookupDb::~LocationDataLookupDb(void)
+	?createEntry@LocationDataLookupDb@@QAEXAAVQLookupItem@@@Z @ 16 NONAME ; void LocationDataLookupDb::createEntry(class QLookupItem &)
+	?close@LocationDataLookupDb@@QAEXXZ @ 17 NONAME ; void LocationDataLookupDb::close(void)
+	?findEntryById@LocationDataLookupDb@@QAE_NAAVQLookupItem@@@Z @ 18 NONAME ; bool LocationDataLookupDb::findEntryById(class QLookupItem &)
+	??_ELocationDataLookupDb@@UAE@I@Z @ 19 NONAME ; LocationDataLookupDb::~LocationDataLookupDb(unsigned int)
+	?updateEntryNameByIdAndType@LocationDataLookupDb@@QAEXIIVQString@@@Z @ 20 NONAME ; void LocationDataLookupDb::updateEntryNameByIdAndType(unsigned int, unsigned int, class QString)
+	?getAllCalendarEntry@LocationDataLookupDb@@QAEXAAV?$QList@VQCalendarLocationDetails@@@@@Z @ 21 NONAME ; void LocationDataLookupDb::getAllCalendarEntry(class QList<class QCalendarLocationDetails> &)
 
--- a/locationdataharvester/bwins/maptileserviceu.def	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/bwins/maptileserviceu.def	Mon Oct 04 00:10:56 2010 +0300
@@ -1,21 +1,39 @@
 EXPORTS
-	?qt_metacast@MapTileService@@UAEPAXPBD@Z @ 1 NONAME ; void * MapTileService::qt_metacast(char const *)
-	?publishCalEntry@MapTileService@@AAEXH@Z @ 2 NONAME ; void MapTileService::publishCalEntry(int)
-	?isLocationFeatureEnabled@MapTileService@@QAE_NW4AppType@1@@Z @ 3 NONAME ; bool MapTileService::isLocationFeatureEnabled(enum MapTileService::AppType)
-	??_EMapTileService@@UAE@I@Z @ 4 NONAME ; MapTileService::~MapTileService(unsigned int)
-	?tr@MapTileService@@SA?AVQString@@PBD0@Z @ 5 NONAME ; class QString MapTileService::tr(char const *, char const *)
-	?getStaticMetaObject@MapTileService@@SAABUQMetaObject@@XZ @ 6 NONAME ; struct QMetaObject const & MapTileService::getStaticMetaObject(void)
-	?trUtf8@MapTileService@@SA?AVQString@@PBD0H@Z @ 7 NONAME ; class QString MapTileService::trUtf8(char const *, char const *, int)
-	??1MapTileService@@UAE@XZ @ 8 NONAME ; MapTileService::~MapTileService(void)
-	??0MapTileService@@QAE@XZ @ 9 NONAME ; MapTileService::MapTileService(void)
-	?getMapTileImage@MapTileService@@QAEHHW4AddressType@1@AAVQString@@V?$QFlags@W4Orientation@Qt@@@@@Z @ 10 NONAME ; int MapTileService::getMapTileImage(int, enum MapTileService::AddressType, class QString &, class QFlags<enum Qt::Orientation>)
-	?metaObject@MapTileService@@UBEPBUQMetaObject@@XZ @ 11 NONAME ; struct QMetaObject const * MapTileService::metaObject(void) const
-	?setMaptileStatus@MapTileService@@QAEXXZ @ 12 NONAME ; void MapTileService::setMaptileStatus(void)
-	?tr@MapTileService@@SA?AVQString@@PBD0H@Z @ 13 NONAME ; class QString MapTileService::tr(char const *, char const *, int)
-	?qt_metacall@MapTileService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 14 NONAME ; int MapTileService::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?readEntryFromMaptileDataBase@MapTileService@@AAEHHW4AddressType@1@AAVTLookupItem@@AAH@Z @ 15 NONAME ; int MapTileService::readEntryFromMaptileDataBase(int, enum MapTileService::AddressType, class TLookupItem &, int &)
-	?trUtf8@MapTileService@@SA?AVQString@@PBD0@Z @ 16 NONAME ; class QString MapTileService::trUtf8(char const *, char const *)
-	?staticMetaObject@MapTileService@@2UQMetaObject@@B @ 17 NONAME ; struct QMetaObject const MapTileService::staticMetaObject
-	?maptileFetchingStatusUpdate@MapTileService@@IAEXHHH@Z @ 18 NONAME ; void MapTileService::maptileFetchingStatusUpdate(int, int, int)
-	?publishValue@MapTileService@@AAEXHW4AddressType@1@H@Z @ 19 NONAME ; void MapTileService::publishValue(int, enum MapTileService::AddressType, int)
+	?deleteEntry@LookupMapTileDatabase@@QAEXAAVMaptileLookupItem@@@Z @ 1 NONAME ; void LookupMapTileDatabase::deleteEntry(class MaptileLookupItem &)
+	?createEntry@LookupMapTileDatabase@@QAEXABVMaptileLookupItem@@@Z @ 2 NONAME ; void LookupMapTileDatabase::createEntry(class MaptileLookupItem const &)
+	?tr@MapTileService@@SA?AVQString@@PBD0@Z @ 3 NONAME ; class QString MapTileService::tr(char const *, char const *)
+	?readEntryFromMaptileDataBase@MapTileService@@AAEHHW4AddressType@1@AAVMaptileLookupItem@@AAH@Z @ 4 NONAME ; int MapTileService::readEntryFromMaptileDataBase(int, enum MapTileService::AddressType, class MaptileLookupItem &, int &)
+	?getStaticMetaObject@MapTileService@@SAABUQMetaObject@@XZ @ 5 NONAME ; struct QMetaObject const & MapTileService::getStaticMetaObject(void)
+	?maptileFetchingStatusUpdate@MapTileService@@IAEXHHH@Z @ 6 NONAME ; void MapTileService::maptileFetchingStatusUpdate(int, int, int)
+	?getAllCalendarIds@LookupMapTileDatabase@@QAEXAAV?$QList@I@@@Z @ 7 NONAME ; void LookupMapTileDatabase::getAllCalendarIds(class QList<unsigned int> &)
+	?qt_metacast@MapTileService@@UAEPAXPBD@Z @ 8 NONAME ; void * MapTileService::qt_metacast(char const *)
+	??_ELookupMapTileDatabase@@UAE@I@Z @ 9 NONAME ; LookupMapTileDatabase::~LookupMapTileDatabase(unsigned int)
+	?isLocationFeatureEnabled@MapTileService@@QAE_NW4AppType@1@@Z @ 10 NONAME ; bool MapTileService::isLocationFeatureEnabled(enum MapTileService::AppType)
+	?resetEntry@LookupMapTileDatabase@@QAEXAAVMaptileLookupItem@@@Z @ 11 NONAME ; void LookupMapTileDatabase::resetEntry(class MaptileLookupItem &)
+	?deleteMapTile@LookupMapTileDatabase@@QAEXABVMaptileLookupItem@@@Z @ 12 NONAME ; void LookupMapTileDatabase::deleteMapTile(class MaptileLookupItem const &)
+	?trUtf8@MapTileService@@SA?AVQString@@PBD0H@Z @ 13 NONAME ; class QString MapTileService::trUtf8(char const *, char const *, int)
+	??0MapTileService@@QAE@XZ @ 14 NONAME ; MapTileService::MapTileService(void)
+	?tr@MapTileService@@SA?AVQString@@PBD0H@Z @ 15 NONAME ; class QString MapTileService::tr(char const *, char const *, int)
+	?close@LookupMapTileDatabase@@QAEXXZ @ 16 NONAME ; void LookupMapTileDatabase::close(void)
+	?findEntryByFilePath@LookupMapTileDatabase@@QAE_NABVQString@@@Z @ 17 NONAME ; bool LookupMapTileDatabase::findEntryByFilePath(class QString const &)
+	?publishValue@MapTileService@@AAEXHW4AddressType@1@H@Z @ 18 NONAME ; void MapTileService::publishValue(int, enum MapTileService::AddressType, int)
+	?findEntriesByMapTileFetchingState@LookupMapTileDatabase@@QAEXIAAV?$QList@VMaptileLookupItem@@@@@Z @ 19 NONAME ; void LookupMapTileDatabase::findEntriesByMapTileFetchingState(unsigned int, class QList<class MaptileLookupItem> &)
+	?publishCalEntry@MapTileService@@AAEXH@Z @ 20 NONAME ; void MapTileService::publishCalEntry(int)
+	?findNumberOfAddress@LookupMapTileDatabase@@QAEHAAH@Z @ 21 NONAME ; int LookupMapTileDatabase::findNumberOfAddress(int &)
+	??_EMapTileService@@UAE@I@Z @ 22 NONAME ; MapTileService::~MapTileService(unsigned int)
+	?getEntry@LookupMapTileDatabase@@QAE_NAAVMaptileLookupItem@@@Z @ 23 NONAME ; bool LookupMapTileDatabase::getEntry(class MaptileLookupItem &)
+	??1MapTileService@@UAE@XZ @ 24 NONAME ; MapTileService::~MapTileService(void)
+	?staticMetaObject@MapTileService@@2UQMetaObject@@B @ 25 NONAME ; struct QMetaObject const MapTileService::staticMetaObject
+	??0LookupMapTileDatabase@@QAE@PAVQObject@@@Z @ 26 NONAME ; LookupMapTileDatabase::LookupMapTileDatabase(class QObject *)
+	?open@LookupMapTileDatabase@@QAE_NXZ @ 27 NONAME ; bool LookupMapTileDatabase::open(void)
+	??1LookupMapTileDatabase@@UAE@XZ @ 28 NONAME ; LookupMapTileDatabase::~LookupMapTileDatabase(void)
+	?updateEntry@LookupMapTileDatabase@@QAEXABVMaptileLookupItem@@@Z @ 29 NONAME ; void LookupMapTileDatabase::updateEntry(class MaptileLookupItem const &)
+	?findEntry@LookupMapTileDatabase@@QAE_NABVMaptileLookupItem@@@Z @ 30 NONAME ; bool LookupMapTileDatabase::findEntry(class MaptileLookupItem const &)
+	?metaObject@MapTileService@@UBEPBUQMetaObject@@XZ @ 31 NONAME ; struct QMetaObject const * MapTileService::metaObject(void) const
+	?getMapTileImage@MapTileService@@QAEHHW4AddressType@1@AAVQString@@V?$QFlags@W4Orientation@Qt@@@@@Z @ 32 NONAME ; int MapTileService::getMapTileImage(int, enum MapTileService::AddressType, class QString &, class QFlags<enum Qt::Orientation>)
+	?setMaptileStatus@MapTileService@@QAEXXZ @ 33 NONAME ; void MapTileService::setMaptileStatus(void)
+	?qt_metacall@MapTileService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 34 NONAME ; int MapTileService::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?trUtf8@MapTileService@@SA?AVQString@@PBD0@Z @ 35 NONAME ; class QString MapTileService::trUtf8(char const *, char const *)
+	?updateUserSetting@LookupMapTileDatabase@@QAEXABVMaptileLookupItem@@@Z @ 36 NONAME ; void LookupMapTileDatabase::updateUserSetting(class MaptileLookupItem const &)
+	?keepExistingLocation@MapTileService@@QAEXHW4AddressType@1@_N@Z @ 37 NONAME ; void MapTileService::keepExistingLocation(int, enum MapTileService::AddressType, bool)
 
--- a/locationdataharvester/bwins/mylocationsdatabasemanageru.def	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/bwins/mylocationsdatabasemanageru.def	Mon Oct 04 00:10:56 2010 +0300
@@ -1,10 +1,12 @@
 EXPORTS
-	?UpdateMapTilePath@CMyLocationsDatabaseManager@@QAEXKKAAV?$TBuf@$0BAA@@@@Z @ 1 NONAME ; void CMyLocationsDatabaseManager::UpdateMapTilePath(unsigned long, unsigned long, class TBuf<256> &)
-	?UpdateEntryName@CMyLocationsDatabaseManager@@QAEXKW4TUidSourceType@@ABVTDesC16@@@Z @ 2 NONAME ; void CMyLocationsDatabaseManager::UpdateEntryName(unsigned long, enum TUidSourceType, class TDesC16 const &)
-	?GetLandmarkFullAddress@CMyLocationsDatabaseManager@@QAEXAAV?$TBuf@$0PP@@@PBVCPosLandmark@@@Z @ 3 NONAME ; void CMyLocationsDatabaseManager::GetLandmarkFullAddress(class TBuf<255> &, class CPosLandmark const *)
-	?ConstructL@CMyLocationsDatabaseManager@@QAEXXZ @ 4 NONAME ; void CMyLocationsDatabaseManager::ConstructL(void)
-	?CheckIfAddressChanged@CMyLocationsDatabaseManager@@QAEHABVTDesC16@@KW4TUidSourceType@@@Z @ 5 NONAME ; int CMyLocationsDatabaseManager::CheckIfAddressChanged(class TDesC16 const &, unsigned long, enum TUidSourceType)
-	?UpdateDatabaseL@CMyLocationsDatabaseManager@@QAEXPAVCPosLandmark@@KKK@Z @ 6 NONAME ; void CMyLocationsDatabaseManager::UpdateDatabaseL(class CPosLandmark *, unsigned long, unsigned long, unsigned long)
-	??0CMyLocationsDatabaseManager@@QAE@XZ @ 7 NONAME ; CMyLocationsDatabaseManager::CMyLocationsDatabaseManager(void)
-	?CheckIfAddressChanged@CMyLocationsDatabaseManager@@QAEHABVCPosLandmark@@KW4TUidSourceType@@@Z @ 8 NONAME ; int CMyLocationsDatabaseManager::CheckIfAddressChanged(class CPosLandmark const &, unsigned long, enum TUidSourceType)
+	?GetLandmarkFullAddress@CMyLocationsDatabaseManager@@QAEXAAV?$TBuf@$0PP@@@PBVCPosLandmark@@@Z @ 1 NONAME ; void CMyLocationsDatabaseManager::GetLandmarkFullAddress(class TBuf<255> &, class CPosLandmark const *)
+	?CheckIfAddressChanged@CMyLocationsDatabaseManager@@QAEHABVTDesC16@@KW4TUidSourceType@@@Z @ 2 NONAME ; int CMyLocationsDatabaseManager::CheckIfAddressChanged(class TDesC16 const &, unsigned long, enum TUidSourceType)
+	?UpdateCalendarLocationById@CMyLocationsDatabaseManager@@QAEXKKABVTDesC16@@@Z @ 3 NONAME ; void CMyLocationsDatabaseManager::UpdateCalendarLocationById(unsigned long, unsigned long, class TDesC16 const &)
+	??0CMyLocationsDatabaseManager@@QAE@XZ @ 4 NONAME ; CMyLocationsDatabaseManager::CMyLocationsDatabaseManager(void)
+	?CheckIfAddressChanged@CMyLocationsDatabaseManager@@QAEHABVCPosLandmark@@KW4TUidSourceType@@@Z @ 5 NONAME ; int CMyLocationsDatabaseManager::CheckIfAddressChanged(class CPosLandmark const &, unsigned long, enum TUidSourceType)
+	?UpdateMapTilePath@CMyLocationsDatabaseManager@@QAEXKKAAV?$TBuf@$0BAA@@@@Z @ 6 NONAME ; void CMyLocationsDatabaseManager::UpdateMapTilePath(unsigned long, unsigned long, class TBuf<256> &)
+	?UpdateEntryName@CMyLocationsDatabaseManager@@QAEXKW4TUidSourceType@@ABVTDesC16@@@Z @ 7 NONAME ; void CMyLocationsDatabaseManager::UpdateEntryName(unsigned long, enum TUidSourceType, class TDesC16 const &)
+	?ConstructL@CMyLocationsDatabaseManager@@QAEXXZ @ 8 NONAME ; void CMyLocationsDatabaseManager::ConstructL(void)
+	?GetAllCalendarEntry@CMyLocationsDatabaseManager@@QAEXAAV?$QList@VQCalendarLocationDetails@@@@@Z @ 9 NONAME ; void CMyLocationsDatabaseManager::GetAllCalendarEntry(class QList<class QCalendarLocationDetails> &)
+	?UpdateDatabaseL@CMyLocationsDatabaseManager@@QAEXPAVCPosLandmark@@KKK@Z @ 10 NONAME ; void CMyLocationsDatabaseManager::UpdateDatabaseL(class CPosLandmark *, unsigned long, unsigned long, unsigned long)
 
--- a/locationdataharvester/eabi/locationdatalookupdbu.def	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/eabi/locationdatalookupdbu.def	Mon Oct 04 00:10:56 2010 +0300
@@ -5,20 +5,23 @@
 	_ZN20LocationDataLookupDb15fillLookupEntryER9QSqlQueryR11QLookupItem @ 4 NONAME
 	_ZN20LocationDataLookupDb15updateEntryByIdERK11QLookupItem @ 5 NONAME
 	_ZN20LocationDataLookupDb17getAddressDetailsEjj @ 6 NONAME
-	_ZN20LocationDataLookupDb23findEntriesByLandmarkIdEjR5QListI11QLookupItemE @ 7 NONAME
-	_ZN20LocationDataLookupDb26findEntryBySourceIdAndTypeER11QLookupItem @ 8 NONAME
-	_ZN20LocationDataLookupDb28deleteEntryBySourceIdAndTypeERK11QLookupItem @ 9 NONAME
-	_ZN20LocationDataLookupDb28updateEntryBySourceIdAndTypeERK11QLookupItem @ 10 NONAME
-	_ZN20LocationDataLookupDb30updateMaptileBySourceIdAndTypeEjj7QString @ 11 NONAME
-	_ZN20LocationDataLookupDb4openEv @ 12 NONAME
-	_ZN20LocationDataLookupDb5closeEv @ 13 NONAME
-	_ZN20LocationDataLookupDb8getCountER5QListIiEj @ 14 NONAME
-	_ZN20LocationDataLookupDbC1EP7QObject @ 15 NONAME
-	_ZN20LocationDataLookupDbC2EP7QObject @ 16 NONAME
-	_ZN20LocationDataLookupDbD0Ev @ 17 NONAME
-	_ZN20LocationDataLookupDbD1Ev @ 18 NONAME
-	_ZN20LocationDataLookupDbD2Ev @ 19 NONAME
-	_ZTI20LocationDataLookupDb @ 20 NONAME
-	_ZTV20LocationDataLookupDb @ 21 NONAME
-	_ZN20LocationDataLookupDb26updateEntryNameByIdAndTypeEjj7QString @ 22 NONAME
+	_ZN20LocationDataLookupDb19deleteCalendarEntryEj @ 7 NONAME
+	_ZN20LocationDataLookupDb19getAllCalendarEntryER5QListI24QCalendarLocationDetailsE @ 8 NONAME
+	_ZN20LocationDataLookupDb23findEntriesByLandmarkIdEjR5QListI11QLookupItemE @ 9 NONAME
+	_ZN20LocationDataLookupDb26findEntryBySourceIdAndTypeER11QLookupItem @ 10 NONAME
+	_ZN20LocationDataLookupDb26updateCalendarLocationByIdEj7QString @ 11 NONAME
+	_ZN20LocationDataLookupDb26updateEntryNameByIdAndTypeEjj7QString @ 12 NONAME
+	_ZN20LocationDataLookupDb28deleteEntryBySourceIdAndTypeERK11QLookupItem @ 13 NONAME
+	_ZN20LocationDataLookupDb28updateEntryBySourceIdAndTypeERK11QLookupItem @ 14 NONAME
+	_ZN20LocationDataLookupDb30updateMaptileBySourceIdAndTypeEjj7QString @ 15 NONAME
+	_ZN20LocationDataLookupDb4openEv @ 16 NONAME
+	_ZN20LocationDataLookupDb5closeEv @ 17 NONAME
+	_ZN20LocationDataLookupDb8getCountER5QListIiEj @ 18 NONAME
+	_ZN20LocationDataLookupDbC1EP7QObject @ 19 NONAME
+	_ZN20LocationDataLookupDbC2EP7QObject @ 20 NONAME
+	_ZN20LocationDataLookupDbD0Ev @ 21 NONAME
+	_ZN20LocationDataLookupDbD1Ev @ 22 NONAME
+	_ZN20LocationDataLookupDbD2Ev @ 23 NONAME
+	_ZTI20LocationDataLookupDb @ 24 NONAME
+	_ZTV20LocationDataLookupDb @ 25 NONAME
 
--- a/locationdataharvester/eabi/maptileserviceu.def	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/eabi/maptileserviceu.def	Mon Oct 04 00:10:56 2010 +0300
@@ -9,13 +9,35 @@
 	_ZN14MapTileService19getStaticMetaObjectEv @ 8 NONAME
 	_ZN14MapTileService24isLocationFeatureEnabledENS_7AppTypeE @ 9 NONAME
 	_ZN14MapTileService27maptileFetchingStatusUpdateEiii @ 10 NONAME
-	_ZN14MapTileService28readEntryFromMaptileDataBaseEiNS_11AddressTypeER11TLookupItemRi @ 11 NONAME
+	_ZN14MapTileService28readEntryFromMaptileDataBaseEiNS_11AddressTypeER17MaptileLookupItemRi @ 11 NONAME
 	_ZN14MapTileServiceC1Ev @ 12 NONAME
 	_ZN14MapTileServiceC2Ev @ 13 NONAME
 	_ZN14MapTileServiceD0Ev @ 14 NONAME
 	_ZN14MapTileServiceD1Ev @ 15 NONAME
 	_ZN14MapTileServiceD2Ev @ 16 NONAME
-	_ZNK14MapTileService10metaObjectEv @ 17 NONAME
-	_ZTI14MapTileService @ 18 NONAME
-	_ZTV14MapTileService @ 19 NONAME
+	_ZN21LookupMapTileDatabase10resetEntryER17MaptileLookupItem @ 17 NONAME
+	_ZN21LookupMapTileDatabase11createEntryERK17MaptileLookupItem @ 18 NONAME
+	_ZN21LookupMapTileDatabase11deleteEntryER17MaptileLookupItem @ 19 NONAME
+	_ZN21LookupMapTileDatabase11updateEntryERK17MaptileLookupItem @ 20 NONAME
+	_ZN21LookupMapTileDatabase13deleteMapTileERK17MaptileLookupItem @ 21 NONAME
+	_ZN21LookupMapTileDatabase17getAllCalendarIdsER5QListIjE @ 22 NONAME
+	_ZN21LookupMapTileDatabase19findEntryByFilePathERK7QString @ 23 NONAME
+	_ZN21LookupMapTileDatabase19findNumberOfAddressERi @ 24 NONAME
+	_ZN21LookupMapTileDatabase33findEntriesByMapTileFetchingStateEjR5QListI17MaptileLookupItemE @ 25 NONAME
+	_ZN21LookupMapTileDatabase4openEv @ 26 NONAME
+	_ZN21LookupMapTileDatabase5closeEv @ 27 NONAME
+	_ZN21LookupMapTileDatabase8getEntryER17MaptileLookupItem @ 28 NONAME
+	_ZN21LookupMapTileDatabase9findEntryERK17MaptileLookupItem @ 29 NONAME
+	_ZN21LookupMapTileDatabaseC1EP7QObject @ 30 NONAME
+	_ZN21LookupMapTileDatabaseC2EP7QObject @ 31 NONAME
+	_ZN21LookupMapTileDatabaseD0Ev @ 32 NONAME
+	_ZN21LookupMapTileDatabaseD1Ev @ 33 NONAME
+	_ZN21LookupMapTileDatabaseD2Ev @ 34 NONAME
+	_ZNK14MapTileService10metaObjectEv @ 35 NONAME
+	_ZTI14MapTileService @ 36 NONAME
+	_ZTI21LookupMapTileDatabase @ 37 NONAME
+	_ZTV14MapTileService @ 38 NONAME
+	_ZTV21LookupMapTileDatabase @ 39 NONAME
+	_ZN14MapTileService20keepExistingLocationEiNS_11AddressTypeEb @ 40 NONAME
+	_ZN21LookupMapTileDatabase17updateUserSettingERK17MaptileLookupItem @ 41 NONAME
 
--- a/locationdataharvester/eabi/mylocationsdatabasemanageru.def	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/eabi/mylocationsdatabasemanageru.def	Mon Oct 04 00:10:56 2010 +0300
@@ -3,9 +3,11 @@
 	_ZN27CMyLocationsDatabaseManager15UpdateDatabaseLEP12CPosLandmarkmmm @ 2 NONAME
 	_ZN27CMyLocationsDatabaseManager15UpdateEntryNameEm14TUidSourceTypeRK7TDesC16 @ 3 NONAME
 	_ZN27CMyLocationsDatabaseManager17UpdateMapTilePathEmmR4TBufILi256EE @ 4 NONAME
-	_ZN27CMyLocationsDatabaseManager21CheckIfAddressChangedERK12CPosLandmarkm14TUidSourceType @ 5 NONAME
-	_ZN27CMyLocationsDatabaseManager21CheckIfAddressChangedERK7TDesC16m14TUidSourceType @ 6 NONAME
-	_ZN27CMyLocationsDatabaseManager22GetLandmarkFullAddressER4TBufILi255EEPK12CPosLandmark @ 7 NONAME
-	_ZN27CMyLocationsDatabaseManagerC1Ev @ 8 NONAME
-	_ZN27CMyLocationsDatabaseManagerC2Ev @ 9 NONAME
+	_ZN27CMyLocationsDatabaseManager19GetAllCalendarEntryER5QListI24QCalendarLocationDetailsE @ 5 NONAME
+	_ZN27CMyLocationsDatabaseManager21CheckIfAddressChangedERK12CPosLandmarkm14TUidSourceType @ 6 NONAME
+	_ZN27CMyLocationsDatabaseManager21CheckIfAddressChangedERK7TDesC16m14TUidSourceType @ 7 NONAME
+	_ZN27CMyLocationsDatabaseManager22GetLandmarkFullAddressER4TBufILi255EEPK12CPosLandmark @ 8 NONAME
+	_ZN27CMyLocationsDatabaseManager26UpdateCalendarLocationByIdEmmRK7TDesC16 @ 9 NONAME
+	_ZN27CMyLocationsDatabaseManagerC1Ev @ 10 NONAME
+	_ZN27CMyLocationsDatabaseManagerC2Ev @ 11 NONAME
 
--- a/locationdataharvester/geocodeupdate/geocodeupdate.pro	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/geocodeupdate/geocodeupdate.pro	Mon Oct 04 00:10:56 2010 +0300
@@ -67,4 +67,6 @@
 	"$${LITERAL_HASH}endif"
 MMP_RULES += defBlock
 
-# End of file	--Don't remove this.
\ No newline at end of file
+# End of file	--Don't remove this.
+
+symbian:MMP_RULES += SMPSAFE
--- a/locationdataharvester/geocodeupdate/src/geocodeupdate.cpp	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/geocodeupdate/src/geocodeupdate.cpp	Mon Oct 04 00:10:56 2010 +0300
@@ -47,10 +47,8 @@
 // ----------------------------------------------------------------------------
 GeocodeUpdate::~GeocodeUpdate()
 {
-    __TRACE_CALLSTACK;
-    if (mUtilInstanceCreated) {
-        delete mAgendaUtil;
-    }
+    __TRACE_CALLSTACK;    
+    delete mAgendaUtil;    
 }
 
 // ----------------------------------------------------------------------------
@@ -78,9 +76,11 @@
     contactManger = new QContactManager("symbian");
     MYLOCLOGSTRING("contactManger object created .");
 
+
     MYLOCLOGSTRING("contactManger object is not null .");
     QContact contact = contactManger->contact(contactId);
-    QContactGeoLocation location;
+    QContactGeoLocation *location=NULL;
+    location=new QContactGeoLocation();
 
     switch (addressType) {
         case ESourceContactsPref:
@@ -89,22 +89,26 @@
         }
         case ESourceContactsWork:
         {
-            location.setContexts(QContactDetail::ContextWork);
+            location->setContexts(QContactDetail::ContextWork);
             break;
         }
         case ESourceContactsHome:
         {
-            location.setContexts(QContactDetail::ContextHome);
+            location->setContexts(QContactDetail::ContextHome);
             break;
         }
         default:
         {
+            delete location;                
+            delete contactManger;
             return false;
         }
     }
-    location.setLongitude(longitude);
-    location.setLatitude(latitude);
-    contact.saveDetail(&location);
+    location->setLongitude(longitude);
+    location->setLatitude(latitude);
+    contact.saveDetail(location);
+    delete location;
+    location=NULL;
     bool ret = false;
     ret = contactManger->saveContact(&contact);
     delete contactManger;
--- a/locationdataharvester/inc/mylocationsdefines.h	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/inc/mylocationsdefines.h	Mon Oct 04 00:10:56 2010 +0300
@@ -19,29 +19,7 @@
 #ifndef __MYLOCATIONSDEFINES_H__
 #define __MYLOCATIONSDEFINES_H__
 
-/**
- * TLookupItem struct.
- * This structure defines a single lookup item.
- */
-
-class TLookupItem
-{
-public:
-    // Uid of the source entry
-    TUint32 iUid;
-
-    // Source type
-    TUint32 iSource;
-
-    // Landmark uid in the landmarks database
-    TUint32 iLmId;
-   
-    // File Path
-    TFileName iFilePath;
-    
-    //MK  map tile fetching status
-    TUint32 iFetchingStatus;
-};
+#include <QString>
 
 /** Defines map tile fetching states.
  */
@@ -49,7 +27,7 @@
 enum TMapTileFetchingState
     {
     /** Map tile fetching completed */
-    EMapTileFectchingCompleted,
+    EMapTileFectchingCompleted=0,
     /** Map tile fetching in progress */
     EMapTileFetchingInProgress,
     /** Map  tile fetching n/w error */
@@ -68,56 +46,11 @@
 // lookup database folder path
 _LIT( KLookupDbPath, "c:\\mylocations\\" );
 
-//Mylocations resource file
-_LIT(KMyLocationsResourceFile, "z:\\resource\\apps\\mylocations.rsc");
-
-// My locations landmarks database uri.
-_LIT( KMylocationsDatabaseUri, "file://c:MyLocationsLandmarks.ldb" );
-
-// maptile database uri.
-_LIT( KMaptileDatabaseUri, "file://c:MyLocationsMaptile.ldb" );
-
-// History landmarks database uri.
-_LIT( KMapsHistoryUri, "file://c:MapsHistoryLandmarks.ldb" );
-
-// mylocations lookup database name
-_LIT( KMylocationsLookupDatabaseName, "mylocationslookup.db" );
-
-// maptile lookup database name
-_LIT( KMapTileLookupDatabaseName, "mylocationsmaptilelookup.db" );
-
-// landmarks lookup database name
-_LIT( KLandmarksLookupDatabaseName, "landmarkslookup.db" );
-
-// database column names
-_LIT( NColUid, "uid" );
-_LIT( NColSource, "source" );
-_LIT( NColLmUid, "lmuid" );
-
-// maptile database column names
-_LIT( NCntColUid, "cntuid" );
-_LIT( NCntColFilePath, "filepath" );
-_LIT( MapTileFetchingStatus, "fetchingstatus" );
-
-// database table name
-_LIT( KLookupTable, "lookuptable" );
-
-// maptile database table name
-_LIT( KMapTileLookupTable, "cntmaptilelookuptable" );
-
-// uid column number
-const TInt KColumnUid = 1;
-// source type column number
-const TInt KColumnSource = 2;
-// landmark uid column number
-const TInt KColumnLmkUid = 3;
-
-// uid column number
-const TInt KColumncntUid = 1;
-// source type column number
-const TInt KColumnFilePath = 3;
-// fetching state  column number
-const TInt KColumnMapTileFetchingStatus = 4;
+#ifdef LOCPICKER_UNIT_TEST
+const QString KLocationDataLookupDbName = "c:\\locationdatalookuptestdb.db"; 
+#else    
+const QString KLocationDataLookupDbName = "c:\\locationdatalookupdb.db"; 
+#endif
 
 const TInt KBufSize=256;
 
@@ -126,8 +59,8 @@
 const int MapTileHeight = 250;
 const int MaptilePortraitWidth = 334;
 const int MaptilePortraitHeight = 250;
-const int MaptileContactLandscapeWidth =  409;
-const int MaptileContactLandscapeHeight = 128;
+const int MaptileContactLandscapeWidth =  382;
+const int MaptileContactLandscapeHeight = 168;
 const int MaptileCalendarLandscapeWidth = 614;
 const int MaptileCalendarLandscapeHeight = 202;    
 const int MaptileHurriganesWidth = 228;    
--- a/locationdataharvester/locationdataharvester.pro	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/locationdataharvester.pro	Mon Oct 04 00:10:56 2010 +0300
@@ -33,3 +33,6 @@
 for(iby, iby.sources):BLD_INF_RULES.prj_exports += "./rom/$$iby $$deploy.path$$iby.path/$$iby"
 
 
+
+
+symbian:MMP_RULES += SMPSAFE
--- a/locationdataharvester/locationdatalookupdb/locationdatalookupdb.cpp	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/locationdatalookupdb/locationdatalookupdb.cpp	Mon Oct 04 00:10:56 2010 +0300
@@ -22,14 +22,8 @@
 #include <QSqlQuery>
 #include <QSqlRecord>
 #include <QVariant>
-#include<locationservicedefines.h>
-
-// database name
-#ifdef LOCPICKER_UNIT_TEST
-const QString KLocationDataLookupDbName = "c:\\locationdatalookuptestdb.db"; 
-#else    
-const QString KLocationDataLookupDbName = "c:\\locationdatalookupdb.db"; 
-#endif
+#include <locationservicedefines.h>
+#include <mylocationsdefines.h>
 
 
 // ================= MEMBER FUNCTIONS =======================
@@ -74,7 +68,7 @@
                                              "maptile varchar(255))");
     
     
-    query.exec("create table if not exists lplookupaddress ("
+    query.exec("create table if not exists calendarlocation ("
                                              "sourceid int,"
                                              "address varchar(255))");
     mDb->close();
@@ -173,22 +167,7 @@
         
         QVariant var = query.lastInsertId();
         aLookupItem.mId = var.toInt();
-        
-        if(aLookupItem.mSourceType==ESourceCalendar)
-        {
-            query.prepare("INSERT INTO lplookupaddress ("
-                    "sourceid ,"
-                    "address )"
-                    "VALUES ("
-                    ":sourceid, "
-                    ":address) " );
-            
-            query.bindValue(":sourceid", aLookupItem.mSourceUid);
-            query.bindValue(":address", aLookupItem.mSingleLineAddress);
-            query.exec();       
-                    
-        }
-        
+              
     }
 }
 
@@ -240,19 +219,7 @@
         query.addBindValue( aLookupItem.mSourceType );
     
         query.exec();
-        
-        if(aLookupItem.mSourceType==ESourceCalendar)
-        {
-            query.prepare("UPDATE lplookupaddress SET "
-                        "address = ? "
-                        "WHERE sourceid = ? ");
-            
-           
-            query.addBindValue( aLookupItem.mSingleLineAddress);
-            query.addBindValue( aLookupItem.mSourceUid);
-            query.exec();       
-                    
-        }
+       
     }
     
 }
@@ -325,17 +292,7 @@
         query.addBindValue( aLookupItem.mId );
     
         query.exec();
-        
-        if(aLookupItem.mSourceType==ESourceCalendar)
-        {
-            query.prepare("UPDATE lplookupaddress SET "
-                          "address = ? " 
-                        "WHERE sourceid = ?");
-                     
-            query.addBindValue( aLookupItem.mSingleLineAddress);
-            query.addBindValue( aLookupItem.mSourceUid );
-            query.exec();     
-        }
+      
     }
 }
 
@@ -376,15 +333,7 @@
         query.addBindValue( aLookupItem.mSourceType );
     
         query.exec();
-        
-        if(aLookupItem.mSourceType==ESourceCalendar)
-        {
-            query.prepare( "DELETE FROM lplookupaddress "
-                                   "WHERE sourceid = ? " );                
-            query.addBindValue( aLookupItem.mSourceUid );
-            query.exec();
-        }
-        
+                
     }
 }
 
@@ -603,7 +552,7 @@
         }
         else if (aSourceType == ESourceCalendar)
         {
-            query.prepare("SELECT * FROM lplookupaddress "
+            query.prepare("SELECT * FROM calendarlocation "
                 "WHERE sourceid = ? ");
             query.addBindValue( aId );
             query.exec();
@@ -692,4 +641,68 @@
     }
 }
 
+// ---------------------------------------------------------
+// LocationDataLookupDb::updateCalendarLocationById()
+// ---------------------------------------------------------
+void LocationDataLookupDb::updateCalendarLocationById(quint32 id , QString location)
+{
+    QSqlQuery query(*mDb);
+    query.prepare("SELECT * FROM calendarlocation "
+        "WHERE sourceid = ? ");
+    query.addBindValue(id);
+    query.exec();
+    if (query.first()) {
+
+        query.prepare("UPDATE calendarlocation SET "
+            "address = ? "
+            "WHERE sourceid = ?");
+        query.addBindValue( location );
+        query.addBindValue( id); 
+
+    }
+    else {
+        query.prepare("INSERT INTO calendarlocation ("
+            "sourceid ,"
+            "address )"
+            "VALUES ("
+            ":sourceid, "
+            ":address) ");
+        query.bindValue(":sourceid", id);
+        query.bindValue(":address", location);       
+       
+    }
+    query.exec();
+
+}
+
+// ---------------------------------------------------------
+// LocationDataLookupDb::deleteCalendarEntry()
+// ---------------------------------------------------------
+void LocationDataLookupDb::deleteCalendarEntry(quint32 id)
+{
+    QSqlQuery query(*mDb);
+    query.prepare( "DELETE FROM calendarlocation "
+                                      "WHERE sourceid = ? " );                
+    query.addBindValue( id );
+    query.exec();
+
+}
+// ---------------------------------------------------------
+// LocationDataLookupDb::getAllCalendarEntry()
+// ---------------------------------------------------------
+void LocationDataLookupDb::getAllCalendarEntry(QList<QCalendarLocationDetails>& lookupItemArray)
+{
+    
+    QSqlQuery query(*mDb);
+    query.prepare( "SELECT * FROM calendarlocation ");    
+    query.exec();
+    while( query.next() ) {  
+    QCalendarLocationDetails calendarEntry;
+    QSqlRecord rec = query.record();
+    calendarEntry.mSourceUid = query.value( rec.indexOf("sourceid") ).toUInt();
+    calendarEntry.mOnelineLocation = query.value( rec.indexOf("address") ).toString();
+    lookupItemArray.append(calendarEntry);
+    }
+    
+}
 // End of file
--- a/locationdataharvester/locationdatalookupdb/locationdatalookupdb.pro	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/locationdatalookupdb/locationdatalookupdb.pro	Mon Oct 04 00:10:56 2010 +0300
@@ -16,6 +16,7 @@
 TEMPLATE = lib
 DEPENDPATH += .
 INCLUDEPATH += .
+INCLUDEPATH += ..\inc
 
 
 # By default Qt adds dependencies to QtCore and QtGui, 
@@ -45,3 +46,6 @@
 	"$${LITERAL_HASH}endif"
 MMP_RULES += defBlock
 
+
+
+symbian:MMP_RULES += SMPSAFE
Binary file locationdataharvester/maptileservice/conf/maptileservice.confml has changed
Binary file locationdataharvester/maptileservice/conf/maptileservice_2002E6E8.crml has changed
--- a/locationdataharvester/maptileservice/inc/maptiledblookuptable.h	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/maptileservice/inc/maptiledblookuptable.h	Mon Oct 04 00:10:56 2010 +0300
@@ -19,73 +19,142 @@
 #ifndef __MAPTILEDBLOOKUPTABLE_H__
 #define __MAPTILEDBLOOKUPTABLE_H__
 
-//Headers needed
-#include <f32file.h> //RFs
-#include <d32dbms.h>  //RDbNamedDatabase,RDbView 
+// DLL_EXPORT macro definition
+#ifdef  MAPTILESERVICEDLL
+#define MAPTILESERVICE_EXPORT Q_DECL_EXPORT
+#else
+#define MAPTILESERVICE_EXPORT Q_DECL_IMPORT
+#endif
 
-#include "mylocationsdefines.h"
+#include <locationservicedefines.h>
+
+// forward declarations
+class QSqlDatabase;
+
+
+
 /**
- * CLookupMapTileDatabase class.
+ * LookupMapTileDatabase class.
  * This class handles all the operations related to maptile lookup database.
  *
  */
-class CLookupMapTileDatabase : public CBase
+class MAPTILESERVICE_EXPORT LookupMapTileDatabase : public QObject
 {
 public:
  
     /**
-    * This is a static function, which creates and returns an instance of this class.
+    * Constructor
     */
-    static CLookupMapTileDatabase* NewL( const TDesC& aLookupTableName );
-
-    /**
-    * This is a static function, which creates and returns an instance of this class. 
-    * Pushes the created object to the cleanup stack.
-    */
-    static CLookupMapTileDatabase* NewLC( const TDesC& aLookupTableName );
+    LookupMapTileDatabase( QObject *parent = 0 );	
 
     /**
     * Destructor
     */
-    ~CLookupMapTileDatabase();
+    ~LookupMapTileDatabase();  
+
+    /**
+    * Opens the lookup database.
+    */
+    bool open();
+
+    /**
+    * Closes the lookup database.
+    */
+    void close();
+ 
 
 public:
+
+
+    /**
+    * Creates an entry in the lookup table.
+    * @param[in] aLookupItem The lookup item to be created in the database.
+    */
+    void createEntry( const MaptileLookupItem& aLookupItem );
+
+    /**
+    * Updates an entry in the lookup table.
+    * @param[in] aLookupItem The lookup item to be updated in the database.
+    */
+    void updateEntry( const MaptileLookupItem& aLookupItem );
+
+    /**
+    * Updates the user setting of an calendar entry in the lookup table.
+    * @param[in] aLookupItem The lookup item to be updated in the database.
+    */
+    void updateUserSetting( const MaptileLookupItem& aLookupItem );
+    /**
+    * Deletes an entry from the lookup table.
+    * @param[in] aLookupItem The lookup item to be deleted from the database.
+    */
+    void deleteEntry( MaptileLookupItem& aLookupItem );
+    
+    /**
+    * Deletes maptile from the repository if the ref to that maptile in the db reaches one
+    * @param[in] aLookupItem The lookup item containing the path to the maptile
+    */
+    void deleteMapTile( const MaptileLookupItem& aLookupItem );
+    
+
+   /**
+    * Gets an entry from the lookup table.
+    * @param[in/out] aLookupItem The lookup item to be fetched from the database.
+    * The source iUid and type is passed in the lookup item. If the item is found the aLookupItem remaining fields are updated.
+    * @return true if the item is found.
+    */
+    bool getEntry( MaptileLookupItem& aLookupItem  );
+
+    /**
+    * Gets the list of calendar ids.
+    * @param[out] aIdArray Calendar id list
+    */
+    void getAllCalendarIds( QList<quint32>& aIdArray );
+    
+    /**
+    * ReSet the entry in the lookup table , with null value 
+    * @param aLookupItem The lookup item entry to be reseted in the database,
+    * get the used maptile path as part of lookupItem filepath , to free the resource 
+    */
+    void resetEntry( MaptileLookupItem &aLookupItem );
   
    /**
     * Finds an entry in the lookup table.
-    * @param[in/out] aLookupItem The lookup item to be found in the database.
-    * The source iUid is passed in the lookup item
+    * @param[in] aLookupItem The lookup item to be found in the database.
+    * The source iUid and type is passed in the lookup item
+    * @return true if the item is found.
     */
-    void FindEntryL( TLookupItem& aLookupItem );
+    bool findEntry( const MaptileLookupItem& aLookupItem );
     
     /**
      * Finds the number of address present in db associated with the aId. 
      * @param id, entry (calendar/contact) uid.
      * @return Number of address a contact has.
      */
-    int FindNumberOfAddressL( int& aId );
+    int findNumberOfAddress( int& aId );
 
-private:
-    
-    // default constructor
-    CLookupMapTileDatabase();
-    
-    // Second phase constructor
-    void ConstructL( const TDesC& aLookupTableName );
+    /**
+    * Finds an entry in the lookup table for the given maptile name.
+    * @param[in] aFilePath The lookup item to be found in the database. maptile file path is passed
+    * @return ETrue if found, else EFalse
+    */
+    bool findEntryByFilePath(const QString& aFilePath);
+
+    /**
+    * Get all the entries in the lookup table for a given fetching status.
+    * @param[in] aFetchingState The fetching status to be found in the database.
+    * @param[out] aLookupItemArray List of lookup items having the fetching status as aFetchingState.
+    */
+    void findEntriesByMapTileFetchingState(const quint32 aFetchingState,
+            QList<MaptileLookupItem>& aLookupItemArray);
 
 private:
     
     // Handle to the items database
-    RDbNamedDatabase iItemsDatabase;
-    
-    // handle to the file session
-    RFs iFsSession;
-        
-    // holds the database file name
-    TFileName iDbFileName;
-    
-    // holds the info about database existence.
-    TBool iDatabaseExists;
+    QSqlDatabase *mDb;
+
+                
+    // Flag to indicate if db is open
+    bool mDbOpen;
 
 };
 
--- a/locationdataharvester/maptileservice/inc/maptileservice.h	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/maptileservice/inc/maptileservice.h	Mon Oct 04 00:10:56 2010 +0300
@@ -24,6 +24,7 @@
 #include <QtGlobal>
 #include <QObject>
 #include <qmobilityglobal.h>
+#include <locationservicedefines.h>
 
 QTM_BEGIN_NAMESPACE
 class QValueSpacePublisher;
@@ -38,7 +39,6 @@
 #define MAPTILESERVICE_EXPORT Q_DECL_IMPORT
 #endif
 
-class TLookupItem;
 
 // CLASS DECLARATION
 
@@ -113,16 +113,24 @@
     * Gets a maptile image associated with a id(contact id/calendar id). 
     * Returns a maptile image path if it is available otherwise returns NULL.
     * 
-    * @param contactId  app id     
-    * @param sourceType Source address type( Preferred, Home , Work address )
+    * @param id,  entry id     
+    * @param sourceType , Source address type( Preferred, Home , Work address )
     * @param imagePath  Maptile image path associated with the app id
     * @param orientation Application current orientation.   
     *      
     * @return Returns the maptile fetching status.
     */
-    int getMapTileImage( int Id, AddressType sourceType, 
+    int getMapTileImage( int id, AddressType sourceType, 
              QString& imagePath, Qt::Orientations orientation = Qt::Vertical  );  
     
+    /**
+    * keep existing location as per user confirmation . 
+    * @param id ,entry id     
+    * @param sourceType Source address type( Preferred, Home , Work address )
+    * @param value ,true if user confirm as yes otherwise false.
+    */
+    void keepExistingLocation(int id ,AddressType sourceType, bool value);
+    
 public slots: 
     /**
      * Receives maptile status information and emits the maptilFetchingStatusUpdate
@@ -165,7 +173,7 @@
     * @param aNoOfAddress ,number of address read from databse 
     */
     int readEntryFromMaptileDataBase( int id, AddressType sourceType,
-                TLookupItem& aLookupItem, int& aNoOfAddress  );
+                MaptileLookupItem& aLookupItem, int& aNoOfAddress  );
 
 private:
     
--- a/locationdataharvester/maptileservice/maptileservice.pro	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/maptileservice/maptileservice.pro	Mon Oct 04 00:10:56 2010 +0300
@@ -26,12 +26,14 @@
 CONFIG += hb
 CONFIG += mobility
 MOBILITY = publishsubscribe
+QT           += sql
 
 DEPENDPATH += .
 INCLUDEPATH += .
 INCLUDEPATH += ../inc
 INCLUDEPATH += ../mylocationlogger/inc
 
+
 MOC_DIR = moc
 
 DEFINES += MAPTILESERVICEDLL
@@ -92,3 +94,7 @@
 	"$${LITERAL_HASH}endif"
 MMP_RULES += defBlock
 
+
+
+symbian:MMP_RULES += SMPSAFE
+
--- a/locationdataharvester/maptileservice/src/maptiledblookuptable.cpp	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/maptileservice/src/maptiledblookuptable.cpp	Mon Oct 04 00:10:56 2010 +0300
@@ -16,211 +16,474 @@
 *
 */
 
-#include <bautils.h>
+#include <QSqlDatabase>
+#include <QSqlQuery>
+#include <QSqlRecord>
+#include <QVariant>
+#include <QFile>
+#include <QTextStream>
+#include <locationservicedefines.h>
 #include <maptileservice.h>
+#include "mylocationsdefines.h"
 #include "maptiledblookuptable.h"
 
 // select all from
-_LIT( KSelectAllFrom, "SELECT * FROM " );
+const QString KSelectAllFrom( "SELECT * FROM " );
 
 // string 'where'
-_LIT( KStringWhere, " WHERE " );
+const QString KWhere( " WHERE " );
 
 // string ' = '
-_LIT( KStringEqual, " = " );
+const QString KEqual( " = " );
+
+// string 'AND'
+const QString KAnd( " AND " );
+// string 'OR'
+const QString KOr( " OR " );
+
+// string '( ' 
+const QString KOpenBrace( "( " );
+// string ' )'
+const QString KCloseBrace( " )" );
 
-// string 'And'
-_LIT( KStringAnd, " AND " );
+// Maptile table name
+const QString KMaptileLookupTable( "maptilelookup " );
+// column source id
+const QString KSourceId( "sourceid" );
+// column source type
+const QString KSourceType( "sourcetype" );
+// column maptile path
+const QString KFilePath( "filepath" );
+// column fetching status
+const QString KStatus( "fetchingstatus" );
 
-
-_LIT(KQueryByMaptileState,"SELECT * FROM cntmaptilelookuptable WHERE cntuid = %d AND ( fetchingstatus = %d OR fetchingstatus = %d )");
+// column user setting status
+const QString KUserSetting( "usersetting" );
 
 // -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::CLookupMapTileDatabase()
+// LookupMapTileDatabase::LookupMapTileDatabase()
 // Default constructor.
 // -----------------------------------------------------------------------------
 //
-CLookupMapTileDatabase::CLookupMapTileDatabase()
+LookupMapTileDatabase::LookupMapTileDatabase(  QObject *parent ) :
+        QObject( parent ),
+        mDb( NULL ),
+        mDbOpen( false )
 {
+	mDb = new QSqlDatabase();
+    *mDb = QSqlDatabase::addDatabase( "QSQLITE" );
+    mDb->setDatabaseName( KLocationDataLookupDbName );
+    if (!mDb->open())
+    {
+        return;
+    }
+
+    // create lookup table if doesnot exist
+    QSqlQuery query( *mDb );
+    QString queryString;
+    QTextStream ( &queryString ) << "create table if not exists " << KMaptileLookupTable << KOpenBrace << 
+                       KSourceId << " int," <<
+                       KSourceType << " int," <<
+                       KFilePath << " varchar(255)," <<
+                       KStatus << " int ," << 
+                       KUserSetting << " bool " << "default 0" << KCloseBrace;
+                       
+                       
+    query.exec( queryString );
+    
+    mDb->close();
 }
 
 // -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::~CLookupMapTileDatabase()
+// LookupMapTileDatabase::~LookupMapTileDatabase()
 // Destructor.
 // -----------------------------------------------------------------------------
 //
-CLookupMapTileDatabase::~CLookupMapTileDatabase()
+LookupMapTileDatabase::~LookupMapTileDatabase()
 {
-
-    // close the database
-	iItemsDatabase.Close();
-	
-	// close the file session
-	iFsSession.Close();
-}
- 
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::~CLookupMapTileDatabase()
-// Creates an object of this class and pushes to cleanup stack.
-// -----------------------------------------------------------------------------
-//
-CLookupMapTileDatabase* CLookupMapTileDatabase::NewLC( const TDesC& aLookupTableName )
-{
-    
-    CLookupMapTileDatabase* self = new (ELeave) CLookupMapTileDatabase;
-    CleanupStack::PushL(self);
-    self->ConstructL( aLookupTableName );
-    return self;
+    close();
+    delete mDb;
 }
 
+// ---------------------------------------------------------
+// LookupMapTileDatabase::open()
+// ---------------------------------------------------------
+bool LookupMapTileDatabase::open()
+{
+    if( !mDbOpen )
+    {
+        mDbOpen = mDb->open();
+    }
+    return mDbOpen;
+}
+
+// ---------------------------------------------------------
+// LookupMapTileDatabase::close()
+// ---------------------------------------------------------
+void LookupMapTileDatabase::close()
+{
+    if( mDbOpen )
+        mDb->close();
+    mDbOpen = false;
+}
 
 // -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::NewL()
-// Creates an object of this class.
+// LookupMapTileDatabase::createEntry()
+// Creates an entry in the lookup table.
 // -----------------------------------------------------------------------------
 //
-CLookupMapTileDatabase* CLookupMapTileDatabase::NewL( const TDesC& aLookupTableName )
+void LookupMapTileDatabase::createEntry( const MaptileLookupItem& aLookupItem )
 {
-    CLookupMapTileDatabase* self = CLookupMapTileDatabase::NewLC( aLookupTableName );
-    CleanupStack::Pop( self );
-    return self;
+    if( mDbOpen )
+    {
+        QString queryString;
+        QTextStream ( &queryString ) <<  
+                "INSERT INTO " << KMaptileLookupTable << 
+                KOpenBrace << KSourceId << ", " << KSourceType << ", " << KFilePath << ", " << KStatus << KCloseBrace <<
+                " VALUES " << 
+                KOpenBrace << ":sid" << ", " << ":stype"  << ", " << ":path" << ", " << ":status" << KCloseBrace;
+                
+
+        QSqlQuery query(*mDb);
+        query.prepare( queryString );
+
+        query.bindValue(":sid", aLookupItem.iUid);
+        query.bindValue(":stype", aLookupItem.iSource);
+        query.bindValue(":path", aLookupItem.iFilePath);
+        query.bindValue(":status", aLookupItem.iFetchingStatus);
+        query.exec();
+    }
 }
- 
 
 // -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::ConstructL()
-// 2nd phase contructor.
+// LookupMapTileDatabase::updateEntry()
+// Updates an entry in the lookup table.
 // -----------------------------------------------------------------------------
 //
-void CLookupMapTileDatabase::ConstructL( const TDesC& aLookupTableName )
+void LookupMapTileDatabase::updateEntry( const MaptileLookupItem& aLookupItem )
 {
-   
-    User::LeaveIfError( iFsSession.Connect() );
+    if( mDbOpen )
+    {
+        QString queryString; //UPDATE maptilelookup SET filepath = ?, status = ? WHERE sourceid = ? AND sourcetype = ?"
+        QTextStream ( &queryString ) <<  
+                "UPDATE " << KMaptileLookupTable << " SET " <<
+                KFilePath << " = ?, " << KStatus << " = ? ," << KUserSetting << " = ? " <<
+                KWhere << 
+                KSourceId << " = ? " << KAnd  << KSourceType << " = ? ";
+                
+        QSqlQuery query(*mDb);
+        query.prepare( queryString );
     
-    iDbFileName.Copy( KLookupDbPath );
-    iDbFileName.Append( aLookupTableName );
-    
-    iDatabaseExists = EFalse; 
-
-    if( BaflUtils::FileExists( iFsSession, iDbFileName ) )
-    {	
-        // database exists 
-        iDatabaseExists = ETrue; 
+        query.addBindValue( aLookupItem.iFilePath );
+        query.addBindValue( aLookupItem.iFetchingStatus );   
+        query.addBindValue( false ); 
+        query.addBindValue( aLookupItem.iUid );
+        query.addBindValue( aLookupItem.iSource );
+        query.exec();
     }
 }
 
 // -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::FindNumberOfAddressL()
+// LookupMapTileDatabase::deleteEntry()
+// Deletes an entry from the lookup table.
+// -----------------------------------------------------------------------------
+//
+void LookupMapTileDatabase::deleteEntry(MaptileLookupItem& aLookupItem)
+{
+    if( mDbOpen )
+    {
+        QString queryString; // DELETE FROM lplookup WHERE sourceid = ? AND sourcetype = ?"
+        QTextStream ( &queryString ) <<  
+                "DELETE FROM  " << KMaptileLookupTable <<
+                KWhere << 
+                KSourceId << " = ? " << KAnd  << KSourceType << " = ? ";
+        
+        QSqlQuery query(*mDb);
+        query.prepare( queryString );
+        
+        query.addBindValue( aLookupItem.iUid );
+        query.addBindValue( aLookupItem.iSource );
+        
+        query.exec();
+    }
+}
+
+
+// -----------------------------------------------------------------------------
+// LookupMapTileDatabase::deleteMapTile()
+// Deletes an maptile if there's no reference to maptile in lookupdb
+// -----------------------------------------------------------------------------
+//
+void LookupMapTileDatabase::deleteMapTile( const MaptileLookupItem& aLookupItem)
+{
+    if( mDbOpen )
+    {
+        QString queryString; //  "SELECT filepath FROM maptilelookuptable WHERE filepath = ?"
+        QTextStream ( &queryString ) <<  
+                KSelectAllFrom << KMaptileLookupTable << 
+                KWhere <<
+                KFilePath << KEqual << " ? " ;
+        QSqlQuery query(*mDb);
+        query.prepare( queryString );
+        query.addBindValue( aLookupItem.iFilePath );
+        
+        query.exec();
+        
+        // Delete if no reference to maptile
+        if ( !query.first() ) 
+        {
+            //delete all releted  maptile 
+            QString temp = aLookupItem.iFilePath;
+            temp.append(MAPTILE_IMAGE_PORTRAIT);       
+            QFile file;
+            file.remove(temp);
+            
+            temp = aLookupItem.iFilePath;
+            temp.append(MAPTILE_IMAGE_CONTACT);
+            temp.append(MAPTILE_IMAGE_LANDSCAPE);
+            file.remove(temp);
+            
+            temp = aLookupItem.iFilePath;
+            temp.append(MAPTILE_IMAGE_CALENDAR);
+            temp.append(MAPTILE_IMAGE_LANDSCAPE);
+            file.remove(temp);
+            
+            temp = aLookupItem.iFilePath;
+            temp.append(MAPTILE_IMAGE_HURRIGANES);         
+            file.remove(temp);
+            
+        }
+    }
+}
+
+// -----------------------------------------------------------------------------
+// LookupMapTileDatabase::findEntriesByMapTileFetchingStatus()
+// Finds a list of lookup items given a fetching status.
+// -----------------------------------------------------------------------------
+//
+void LookupMapTileDatabase::findEntriesByMapTileFetchingState(const quint32 aFetchingState,
+        QList<MaptileLookupItem>& aLookupItemArray)
+{
+    if( mDbOpen )
+    {
+        QString queryString; //  "SELECT * FROM maptilelookuptable WHERE fetchingstatus = %d"
+        QTextStream ( &queryString ) <<  
+                KSelectAllFrom << KMaptileLookupTable << 
+                KWhere <<
+                KStatus << KEqual << " ? " ;
+        QSqlQuery query(*mDb);
+        query.prepare( queryString );
+        query.addBindValue( aFetchingState );
+        
+        query.exec();
+        
+        while( query.next() )
+        {    
+            QSqlRecord rec = query.record();
+            MaptileLookupItem lookupItem;
+            lookupItem.iUid = query.value( rec.indexOf( KSourceId ) ).toUInt();
+            lookupItem.iSource = query.value( rec.indexOf( KSourceType ) ).toUInt();
+            lookupItem.iFilePath = query.value( rec.indexOf( KFilePath ) ).toString();
+            lookupItem.iFetchingStatus = query.value( rec.indexOf( KStatus ) ).toUInt();
+            lookupItem.iUserSetting = query.value( rec.indexOf( KUserSetting ) ).toBool();
+            aLookupItemArray.append( lookupItem );
+        }
+    }
+}
+
+// -----------------------------------------------------------------------------
+// LookupMapTileDatabase::getAllCalendarIds()
+// Gets the list of calendar ids .
+// -----------------------------------------------------------------------------
+//
+void LookupMapTileDatabase::getAllCalendarIds( QList<quint32>& aIdArray )
+{
+    if( mDbOpen )
+    {
+        QString queryString; //  "SELECT cntuid FROM maptilelookuptable WHERE sourcetype = %d");
+        QTextStream ( &queryString ) <<  
+                KSelectAllFrom << KMaptileLookupTable << 
+                KWhere <<
+                KSourceType << KEqual << " ? " ;
+        QSqlQuery query(*mDb);
+        query.prepare( queryString );
+        query.addBindValue( ESourceCalendar );
+        
+        query.exec();
+        
+        while( query.next() )
+        {    
+            QSqlRecord rec = query.record();
+            quint32 id = query.value( rec.indexOf( KSourceId ) ).toUInt();
+            aIdArray.append( id );
+        }
+    }
+}
+
+
+
+// -----------------------------------------------------------------------------
+// LookupMapTileDatabase::resetEntry()
+// Reset the entry with null value and get the used maptile path as part of aLookupItem.
+// -----------------------------------------------------------------------------
+//
+void LookupMapTileDatabase::resetEntry(MaptileLookupItem &aLookupItem)
+{
+    if( mDbOpen )
+    {
+        // getEntry will replace the fetching status. so copy fetching status to temparory variable. 
+	      quint32 tempStatus = aLookupItem.iFetchingStatus;
+	      
+	      if( getEntry( aLookupItem ) )
+	      {
+	      	  // set file path to nullstring
+	          aLookupItem.iFilePath = "";
+	          aLookupItem.iFetchingStatus = tempStatus;
+	          // update entry in db
+	          updateEntry( aLookupItem );
+	      }
+	  }
+}
+ 
+// -----------------------------------------------------------------------------
+// LookupMapTileDatabase::findNumberOfAddress()
 // find the number of address associated with the aId.
 // -----------------------------------------------------------------------------
 //
-int CLookupMapTileDatabase::FindNumberOfAddressL( int& aId )
+int LookupMapTileDatabase::findNumberOfAddress( int& aId )
 {
     int count = 0;
-    
-    // Create a query to find the item.
-    TFileName queryBuffer;
-    queryBuffer.Format( KQueryByMaptileState,aId,
-             MapTileService::MapTileFetchingInProgress,
-             MapTileService::MapTileFetchingNetworkError );
-  
-    TInt ret = iItemsDatabase.Open( iFsSession, iDbFileName );
-    
-    if( ret != KErrNone )
-    {          
-        //if already opened , close and open again
-        iItemsDatabase.Close();          
-        User::LeaveIfError( iItemsDatabase.Open( iFsSession, iDbFileName ) );
+
+    if( mDbOpen )
+    {
+        QString queryString; //  "SELECT * FROM maptilelookup WHERE sourceid = aId AND ( fetchingstatus = MapTileFetchingInProgress OR fetchingstatus = MapTileFetchingNetworkError )"
+        QTextStream ( &queryString ) <<  
+                KSelectAllFrom << KMaptileLookupTable << 
+                KWhere <<
+                KSourceId << KEqual << aId << 
+                KAnd << 
+                KOpenBrace << KStatus << KEqual << MapTileService::MapTileFetchingInProgress << 
+                              KOr << KStatus << KEqual << MapTileService::MapTileFetchingNetworkError << KCloseBrace ;
+        QSqlQuery query(*mDb);
+        query.exec( queryString );
+        while( query.next() )  count++;
     }
     
-    User::LeaveIfError( iItemsDatabase.Begin() );       
-    // Create a view of the table with the above query.
-    RDbView myView;
-    myView.Prepare( iItemsDatabase, TDbQuery( queryBuffer ) );
-    CleanupClosePushL( myView );
-    myView.EvaluateAll();
-    myView.FirstL();
-    
-    
-    while (myView.AtRow())
-    {
-        count++;
-        myView.NextL();
-    }
-    
-    CleanupStack::PopAndDestroy( &myView ); // myView
-         
-    //Close the database
-    iItemsDatabase.Close();
-
     return count;
 }
 
 // -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::FindEntryL()
+// LookupMapTileDatabase::findEntry()
 // Finds an entry in the lookup table.
 // -----------------------------------------------------------------------------
 //
-void CLookupMapTileDatabase::FindEntryL( TLookupItem& aLookupItem )
+bool LookupMapTileDatabase::findEntry( const MaptileLookupItem& aLookupItem )
 { 
-   
-    // used to check whether entry available or not
-    TBool entryAvailable = EFalse;
-  
-    if ( iDatabaseExists )
+    if( mDbOpen )
     {
+        QString queryString; //  "SELECT * FROM maptilelookup WHERE sourceid = aLookupItem.iUid AND sourcetype = aLookupItem.iSource"
+        QTextStream ( &queryString ) <<  
+                KSelectAllFrom << KMaptileLookupTable << 
+                KWhere <<
+                KSourceId << KEqual << aLookupItem.iUid << 
+                KAnd << 
+                KSourceType << KEqual << aLookupItem.iSource ;
+        QSqlQuery query(*mDb);
+        query.exec( queryString );
+        
+        if ( query.first() ) 
+        {
+            return true;
+        }
+    }
+    return false;
+}
 
-        // Create a query to find the item.
-        TFileName queryBuffer;
-        queryBuffer.Copy( KSelectAllFrom );
-        queryBuffer.Append( KMapTileLookupTable );
-        queryBuffer.Append( KStringWhere );
-        queryBuffer.Append( NCntColUid );
-        queryBuffer.Append( KStringEqual );
-        queryBuffer.AppendNum( aLookupItem.iUid );
-        queryBuffer.Append( KStringAnd );
-        queryBuffer.Append( NColSource );
-        queryBuffer.Append( KStringEqual );
-        queryBuffer.AppendNum( aLookupItem.iSource );
+// -----------------------------------------------------------------------------
+// LookupMapTileDatabase::getEntry()
+// Gets a lookup item from the lookup table using source id and type.
+// -----------------------------------------------------------------------------
+//
+bool LookupMapTileDatabase::getEntry( MaptileLookupItem& aLookupItem )
+{ 
+    if( mDbOpen )
+    {
+        QString queryString; //  "SELECT * FROM maptilelookup WHERE sourceid = aLookupItem.iUid AND sourcetype = aLookupItem.iSource"
+        QTextStream ( &queryString ) <<  
+                KSelectAllFrom << KMaptileLookupTable << 
+                KWhere <<
+                KSourceId << KEqual << aLookupItem.iUid << 
+                KAnd << 
+                KSourceType << KEqual << aLookupItem.iSource ;
+        QSqlQuery query(*mDb);
+        query.exec( queryString );
         
-        TInt ret = iItemsDatabase.Open( iFsSession, iDbFileName );
-        
-        if( ret != KErrNone )
-        {          
-            //if already opened , close and open again
-            iItemsDatabase.Close();          
-            User::LeaveIfError( iItemsDatabase.Open( iFsSession, iDbFileName ) );
+        if ( query.first() ) 
+        {
+            QSqlRecord rec = query.record();
+            aLookupItem.iFilePath = query.value( rec.indexOf( KFilePath ) ).toString();
+            aLookupItem.iFetchingStatus = query.value( rec.indexOf( KStatus ) ).toUInt();
+            aLookupItem.iUserSetting = query.value( rec.indexOf( KUserSetting ) ).toBool();
+            return true;
+            		
         }
-        User::LeaveIfError( iItemsDatabase.Begin() );       
-        // Create a view of the table with the above query.
-        RDbView myView;
-        myView.Prepare( iItemsDatabase, TDbQuery( queryBuffer ) );
-        CleanupClosePushL( myView );
-        myView.EvaluateAll();
-        myView.FirstL();
+    }
+    return false;
+}
+
+// -----------------------------------------------------------------------------
+// LookupMapTileDatabase::findEntryByFilePath()
+// Finds an entry in the lookup table for maptile image file
+// -----------------------------------------------------------------------------
+//
+bool LookupMapTileDatabase::findEntryByFilePath( const QString& aFilePath )
+{
+    if( mDbOpen )
+    {
+        QString queryString; //  "SELECT filepath FROM maptilelookuptable WHERE filepath = ?"
+        QTextStream ( &queryString ) <<  
+                KSelectAllFrom << KMaptileLookupTable << 
+                KWhere <<
+                KFilePath << KEqual << " ? " ;
+        QSqlQuery query(*mDb);
+        query.prepare( queryString );
+        query.addBindValue( aFilePath );
+        
+        query.exec();
+        
+        if( query.first() )
+        {
+            return true;
+        }
+    }
     
-        if( myView.AtRow() ) 
-        {  
-            // Item found. get the details.
-            myView.GetL();      
-            if( aLookupItem.iUid == myView.ColUint( KColumnUid ) )
-            {               
-                aLookupItem.iFilePath.Copy( myView.ColDes16( KColumnFilePath ) );
-                aLookupItem.iFetchingStatus = myView.ColUint( KColumnMapTileFetchingStatus );
-                entryAvailable = ETrue;
-            }      
-        } 
-    
-        CleanupStack::PopAndDestroy( &myView ); // myView
-        
-        //Close the database
-        iItemsDatabase.Close();
-    }
-   
-    //No entry found 
-    if( !entryAvailable )
+    return false;
+}
+
+// -----------------------------------------------------------------------------
+// LookupMapTileDatabase::updateUserSetting()
+// Updates an entry in the lookup table.
+// -----------------------------------------------------------------------------
+//
+void LookupMapTileDatabase::updateUserSetting( const MaptileLookupItem& aLookupItem )
+{
+    if( mDbOpen )
     {
-        User::Leave( KErrNotFound );
+      
+        QString queryString; 
+        QTextStream ( &queryString ) <<  
+                "UPDATE " << KMaptileLookupTable << " SET " <<
+                    KStatus << " = ? ," << KUserSetting << " = ? " << 
+                KWhere << 
+                KSourceId << " = ? " << KAnd  << KSourceType << " = ? ";
+                
+        QSqlQuery query(*mDb);
+        query.prepare( queryString );
+        query.addBindValue( aLookupItem.iFetchingStatus );
+        query.addBindValue( aLookupItem.iUserSetting );
+        query.addBindValue( aLookupItem.iUid );
+        query.addBindValue( aLookupItem.iSource );
+        query.exec();
     }
 }
 
--- a/locationdataharvester/maptileservice/src/maptileservice.cpp	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/maptileservice/src/maptileservice.cpp	Mon Oct 04 00:10:56 2010 +0300
@@ -25,6 +25,7 @@
 #include "mylocationlogger.h"
 
 #include "maptileservice.h"
+#include "mylocationsdefines.h"
 #include "maptiledblookuptable.h"
 #include <QVariant>
 // CONSTANTS
@@ -33,6 +34,7 @@
 
 // Central Repository Key IDs
 const TInt KEnableLocationFeature  = 0x1;
+const TInt KMaptileDbSyncState  = 0x2;
 
 const char *MAPTILE_STATUS_RECEIVER = "/maptilestatuspublisher/name";
 const char *MAPTILE_STATUS_PUBLISHER = "/maptilecontactpublisher";
@@ -129,12 +131,25 @@
 {
     __TRACE_CALLSTACK;
     
-    TLookupItem lookupItem;
+     if ( sourceType == AddressPlain ){
+         CRepository* centralRepository = NULL; 
+         TRAP_IGNORE( centralRepository = CRepository::NewL( KUidMapTileInterface ) );
+         int repValue=0;
+         if(centralRepository){
+            centralRepository->Get( KMaptileDbSyncState , repValue );            
+            delete centralRepository;   
+            if(repValue == 1){ 
+                publishCalEntry( id );
+                return MapTileFetchingInProgress;    
+            }
+        }
+    }    
     
+    MaptileLookupItem lookupItem;    
     int addressCount = 0;  
     int maptileStatus = MapTileFetchingUnknownError;
-
-    int error = readEntryFromMaptileDataBase( id, sourceType, lookupItem, addressCount );
+    int error;
+    error = readEntryFromMaptileDataBase( id, sourceType, lookupItem, addressCount );
         
     //if entry available returns the file path otherwise NULL. 
     if ( KErrNone == error  )
@@ -146,8 +161,7 @@
         if( maptileStatus == MapTileFetchingCompleted )
         {
             //Get the image path
-	          QString imageFile((QChar*)lookupItem.iFilePath.Ptr(),
-	                    lookupItem.iFilePath.Length());
+	          QString imageFile(lookupItem.iFilePath);
 	          imagePath = imageFile;
 	        
 	          if( orientation == Qt::Vertical )
@@ -346,43 +360,45 @@
 // -----------------------------------------------------------------------------
 //
 int MapTileService::readEntryFromMaptileDataBase( 
-            int id, AddressType sourceType, TLookupItem& aLookupItem, int& aNoOfAddress )
+            int id, AddressType sourceType, MaptileLookupItem& aLookupItem, int& aNoOfAddress )
 {
     
+    TInt err = KErrUnknown;
+
     //Maptile database  instance
-    CLookupMapTileDatabase* mapTileDatabase = NULL;
-   
-    TRAPD( err, mapTileDatabase = CLookupMapTileDatabase::NewL(
-            KMapTileLookupDatabaseName ) );
+    LookupMapTileDatabase* mapTileDatabase = new LookupMapTileDatabase();
     
-    if ( KErrNone == err )
+    if ( mapTileDatabase )
     {     
-        TRAP( err,aNoOfAddress = mapTileDatabase->FindNumberOfAddressL(id) );
-        MYLOCLOGSTRING1("no of address  FindNumberOfAddressL returns - %d ", err );     
-       if ( KErrNone == err )
+       if( mapTileDatabase->open() )
        {
-            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 );
+           err = KErrNone;
+           aNoOfAddress = mapTileDatabase->findNumberOfAddress(id);
+           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;
+           }
+           
+           if( !mapTileDatabase->getEntry( aLookupItem ) )
+           {
+              err = KErrNotFound;
+           }
+     
+           MYLOCLOGSTRING1("getMapTileImage getEntry returns - %d ", err );
         }
         //delet the database instance
         delete mapTileDatabase;
@@ -391,4 +407,38 @@
     
     return err;
 }
+
+// -----------------------------------------------------------------------------
+// MapTileService::keepExistingLocation()
+// update the map tile table user setting status according to user setting status
+// -----------------------------------------------------------------------------
+//
+void MapTileService::keepExistingLocation(int id ,AddressType sourceType, bool value)
+{
+    //Maptile database  instance
+    LookupMapTileDatabase mapTileDatabase ;
+    switch(sourceType)
+    {
+        case AddressPlain:
+        {
+            if( mapTileDatabase.open() )
+            {
+                MaptileLookupItem lookupItem;                
+                lookupItem.iUid=id;
+                lookupItem.iSource=sourceType;
+                mapTileDatabase.getEntry(lookupItem);                
+                lookupItem.iUserSetting=value;
+                if(!value)
+                {
+                    lookupItem.iFetchingStatus=MapTileFetchingInProgress;
+                }
+                mapTileDatabase.updateUserSetting(lookupItem);               
+            }
+            break;
+        }
+        default:
+            break;
+    }
+
+}
 // End of file
--- a/locationdataharvester/mylocationsdatabasemanager/inc/mylocationsdatabasemanager.h	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/mylocationsdatabasemanager/inc/mylocationsdatabasemanager.h	Mon Oct 04 00:10:56 2010 +0300
@@ -119,8 +119,21 @@
          * @return , true for match case .
          */
         IMPORT_C TBool CheckIfAddressChanged(const TDesC& aAddress,
-                const TUint32 aId, const TUidSourceType aAddressType);
+                const TUint32 aId, const TUidSourceType aAddressType);        
         
+    /**
+       * Updates the calendar entry  
+       * @param aId , id of the caleentry
+       * @param aChangeType , changetype of the calendar entry
+       * @param aLocation , location details of the calendar entry 
+       */
+        IMPORT_C void UpdateCalendarLocationById(const TUint32 aUid, const TUint32 aChangeType,const TDesC& aLocation);    
+      
+      /**
+       * gets all the calendar entry  
+       * @param aCalEntryArray , refference to all entry
+       */
+        IMPORT_C void GetAllCalendarEntry(QList<QCalendarLocationDetails>& aCalEntryArray);
 
 #ifdef LOCATION_DATA_HARVESTER_UNIT_TEST
 public:
--- a/locationdataharvester/mylocationsdatabasemanager/mylocationsdatabasemanager.pro	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/mylocationsdatabasemanager/mylocationsdatabasemanager.pro	Mon Oct 04 00:10:56 2010 +0300
@@ -68,3 +68,6 @@
 
 
 
+
+
+symbian:MMP_RULES += SMPSAFE
--- a/locationdataharvester/mylocationsdatabasemanager/src/mylocationsdatabasemanager.cpp	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/mylocationsdatabasemanager/src/mylocationsdatabasemanager.cpp	Mon Oct 04 00:10:56 2010 +0300
@@ -33,6 +33,7 @@
 
 #include <locationdatalookupdb.h>
 #include <QString>
+#include <QList>
 // separator
 _LIT( KSeparator, ",");
 // space
@@ -288,11 +289,6 @@
     lookupItem.mIsDuplicate = 0;
     lookupItem.mIconPath = "";
     lookupItem.mMapTilePath = "";
-    lookupItem.mSingleLineAddress="";
-    TPtrC16 dataPtr;
-    aLandmark->GetPositionField(EPositionFieldComment ,dataPtr);
-    lookupItem.mSingleLineAddress=QString::fromUtf16(dataPtr.Ptr(),
-            dataPtr.Length());
     //fill address into lookup item.
     FillLookupItemAddressDetails( aLandmark, lookupItem );
 
@@ -392,10 +388,6 @@
     lookupItem.mSourceUid = aUid;
     lookupItem.mSourceType = aSourceType;
     lookupItem.mIconType = QLookupItem::EIconTypeDefault;
-    TPtrC16 dataPtr;
-    aLandmark->GetPositionField(EPositionFieldComment ,dataPtr);
-    lookupItem.mSingleLineAddress=QString::fromUtf16(dataPtr.Ptr(),
-            dataPtr.Length());
 
     // Behavior: If an entry is modified, 
     // If this entry is not present in lookup table. add the entry and update the landmarks db.
@@ -1146,7 +1138,46 @@
     {
         compareStatus= EFalse;
     }
+    else
+    {
+        iLocationAppLookupDb->updateCalendarLocationById(aId,source);   
+    }
     return compareStatus;
 }
 
+// -----------------------------------------------------------------------------
+// CMyLocationsDatabaseManager::UpdateCalendarLocationById()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMyLocationsDatabaseManager::UpdateCalendarLocationById(const TUint32 aUid, const TUint32 aChangeType,const TDesC& aLocation)
+{
+    
+    
+    switch (aChangeType)
+       {
+           case EEntryAdded:
+           case EEntryModified:
+               
+           {
+               QString location = QString( (QChar*)aLocation.Ptr(), aLocation.Length());
+               iLocationAppLookupDb->updateCalendarLocationById(aUid,location);
+               break;
+           }          
+           case EEntryDeleted:
+           {
+               iLocationAppLookupDb->deleteCalendarEntry(aUid);
+               break;
+           }
+       }       
+}
+
+// -----------------------------------------------------------------------------
+// CMyLocationsDatabaseManager::GetAllCalendarEntry()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CMyLocationsDatabaseManager::GetAllCalendarEntry(QList<QCalendarLocationDetails>& aCalEntryArray)
+{
+    iLocationAppLookupDb->getAllCalendarEntry(aCalEntryArray);
+}
+
 // End of file
--- a/locationdataharvester/mylocationsengine/inc/lookupmaptiledb.h	Thu Sep 02 20:20:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +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 database lookup table header.
-*
-*/
-
-#ifndef __LOOKUPMAPTILEDB_H__
-#define __LOOKUPMAPTILEDB_H__
-
-//Headers needed
-#include <f32file.h> //RFs
-#include <d32dbms.h>  //RDbNamedDatabase,RDbView 
-
-#include "mylocationsdefines.h"
- 
-/**
- * CLookupMapTileDatabase class.
- * This class handles all the operations related to maptile lookup database.
- *
- */
- 
-class CLookupMapTileDatabase : public CBase
-{
-public:
-    // Two phase constructors
- 
-    /**
-    * This is a static function, which creates and returns an instance of this class.
-    */
-    static CLookupMapTileDatabase* NewL( const TDesC& aLookupTableName );
-
-    /**
-    * This is a static function, which creates and returns an instance of this class. Pushes the created object 
-    * to the cleanup stack.
-    */
-    static CLookupMapTileDatabase* NewLC( const TDesC& aLookupTableName );
-
-    /**
-    * Destructor
-    */
-    ~CLookupMapTileDatabase();
-
-public:
-    
-    /**
-    * Opens the lookup database.
-    */
-    TInt Open();
-
-    /**
-    * Closes the lookup database.
-    */
-    void Close();
-
-    /**
-    * Creates an entry in the lookup table.
-    * @param[in] aLookupItem The lookup item to be created in the database.
-    */
-    void CreateEntryL( const TLookupItem& aLookupItem );
-
-    /**
-    * Updates an entry in the lookup table.
-    * @param[in] aLookupItem The lookup item to be updated in the database.
-    */
-    void UpdateEntryL( const TLookupItem& aLookupItem );
-
-    /**
-    * Deletes an entry from the lookup table.
-    * @param[in] aLookupItem The lookup item to be deleted from the database.
-    */
-    void DeleteEntryL( TLookupItem& aLookupItem );
-    
-    /**
-    * Deletes maptile from the repository if the ref to that maptile in the db reaches one
-    * @param[in] aLookupItem The lookup item containing the path to the maptile
-    */
-    void DeleteMapTileL( const TLookupItem& aLookupItem );
-
-    /**
-    * Finds an entry in the lookup table.
-    * @param[in/out] aLookupItem The lookup item to be found in the database. The source iUid is passed
-    * in the lookup item
-    * @return ETrue if found, else EFalse
-    */
-    TBool FindEntryL( TLookupItem& aLookupItem);
-    
-    /**
-    * Finds an entry in the lookup table for the given maptile name.
-    * @param[in] aFilePath The lookup item to be found in the database. maptile file path is passed
-    * @return ETrue if found, else EFalse
-    */
-    TBool FindEntryByFilePathL(const TDesC& aFilePath);
-
-    void FindEntriesByMapTileFetchingStateL(const TUint32 aFetchingState,
-            RArray<TLookupItem>& aLookupItemArray);
-
-    /**
-    * Gets the list of calendar ids.
-    * @param[out] aIdArray Calendar id list
-    */
-    void GetAllCalendarIdsL( RArray<TUint32>& aIdArray );
-    
-    /**
-    * ReSet the entry in the lookup table , with null value 
-    * @param aLookupItem The lookup item entry to be reseted in the database,
-    * get the used maptile path as part of lookupItem filepath , to free the resource 
-    */
-    void ReSetEntryL( TLookupItem &aLookupItem );
-private:
-    
-    // default constructor
-    CLookupMapTileDatabase();
-    
-    // Second phase constructor
-    void ConstructL( const TDesC& aLookupTableName );
-    
-    // Creates a lookup table in the lookup database.
-    void CreateTableL(RDbDatabase& aDatabase);
-          
-private:
-    
-    // Handle to the items database
-    RDbNamedDatabase iItemsDatabase;
-    
-    // handle to the file session
-    RFs iFsSession;
-        
-    // holds the database file name
-    TFileName iDbFileName;
-
-};
-
-
-#endif  // __LOOKUPMAPTILEDB_H__
-
-// End of file
-
--- a/locationdataharvester/mylocationsengine/inc/mylocationsengine.h	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/mylocationsengine/inc/mylocationsengine.h	Mon Oct 04 00:10:56 2010 +0300
@@ -35,9 +35,9 @@
 #include<EPos_CPosLandmarkDatabase.h>
 
 // mylocations database manager
+#include "maptiledblookuptable.h"
 #include "maptileinterface.h"
 #include "mylocationsdatabasemanager.h"
-#include "lookupmaptiledb.h"
 #include "calendernotification.h"
 #include "mylocationgeotagtimerao.h"
 class GeocodeUpdate;
@@ -156,6 +156,15 @@
 private:
 #endif
     
+    //cenrep setting for db in sync state.
+    enum TCenrepSetting
+    {
+        //get the value
+        EMapTileDbStatusGet=0,
+        //set the value
+        EMapTileDbStatusSet
+    };
+    
     /**
      * ConstructL.
      * 2nd phase constructor.
@@ -198,7 +207,7 @@
     * @param aLookupItem Provides information about single address of contact.  
     */  
 	void UpdateMaptileDatabaseL(TInt aEventType ,
-	                             TLookupItem& aLookupItem );
+	                             MaptileLookupItem& aLookupItem );
 	
     /**
      *  Handles active object's request completion event. 
@@ -259,6 +268,11 @@
     void RefreshCalendarEntryListL();    
 
     /**
+    * Deletes invalid calendar entries from mylocation databases.
+    */
+    void DeleteInvalidCalendarEntriesL();    
+    
+    /**
     * Returns True if a calendar entry is available for a given id.
     */
     TBool IsCalendarEntryValidL( TUint32 aId );    
@@ -291,7 +305,7 @@
     /**
      * maptile database manipulation.
      */
-    void ManipulateMapTileDataBaseL(TLookupItem& aLookupItem);
+    void ManipulateMapTileDataBaseL(MaptileLookupItem& aLookupItem);
     
     /**
      * Crop and create multiple maptile images for different applications requirements.
@@ -307,6 +321,20 @@
 	/**Get the contact name for this perticular id.
      */
 	void GetContactName( TInt32 iUId , TDes& aName );
+	
+    /**
+    * Publishing the entry after maptile db modification.
+    * @param aUid, entry id
+    * @param aLookupItem, all entry details
+    */
+    void PublishEntry(TInt32 aUId,  MaptileLookupItem& aLookupItem);
+    
+    /**
+    * Get/Set the maptile db status 
+    * @param aSettingType, Type of setting
+    * @param aValue, Value for the key
+    */
+    void MaptileDbSyncStatusL(const TCenrepSetting& aSettingType, TInt& aValue);
      
 public:  //From MMapTileObserver
     
@@ -365,7 +393,7 @@
     CMyLocationsDatabaseManager*  iMyLocationsDatabaseManager;
     
     //maptiledb 
-    CLookupMapTileDatabase* iMaptileDatabase;
+    LookupMapTileDatabase* iMaptileDatabase;
 
     //Current event type
     TInt iEventType;
--- a/locationdataharvester/mylocationsengine/mylocationsengine.pro	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/mylocationsengine/mylocationsengine.pro	Mon Oct 04 00:10:56 2010 +0300
@@ -1,3 +1,19 @@
+//====
+#                                                                    
+# Copyright (c) 2009 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:                                                        
+#                                                                     
 
 TEMPLATE=app
 TARGET=mylocationsengine
@@ -10,6 +26,7 @@
 INCLUDEPATH += ../geocodeupdate/inc
 INCLUDEPATH += ../mylocationlogger/inc
 INCLUDEPATH += ../mylocationsdatabasemanager/inc
+INCLUDEPATH += ../maptileservice/inc
 INCLUDEPATH += /epoc32/include/app
 
 
@@ -35,9 +52,11 @@
         -lQtContacts \
         -lgeocodeupdate \
         -lecom \
+        -lcentralrepository \
 	-lcalinterimapi \
 	-llocationdatalookupdb \
-	-lmylocationsdatabasemanager
+	-lmylocationsdatabasemanager \
+	-lmaptileservice
 	
 	
 	myCrml.sources = ./conf/maptilestatuspublisher.qcrml
@@ -49,7 +68,6 @@
 SOURCES += src/appmain.cpp \
     src/mylocationsengine.cpp \
     src/maptileinterface.cpp \
-    src/lookupmaptiledb.cpp    \
     src/calendernotification.cpp \
     src/mylocationgeotagtimerao.cpp \
     src/contactsubscriber.cpp \
@@ -58,7 +76,6 @@
 HEADERS += inc/appmain.h \
     inc/mylocationsengine.h \
     inc/maptileinterface.h \
-    inc/lookupmaptiledb.h \
     inc/calendernotification.h \
     inc/mylocationgeotagtimerao.h \
     inc/contactsubscriber.h \
@@ -67,3 +84,6 @@
 
 
 
+
+
+symbian:MMP_RULES += SMPSAFE
--- a/locationdataharvester/mylocationsengine/src/lookupmaptiledb.cpp	Thu Sep 02 20:20:42 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,607 +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 database lookup table source implementation.
-*
-*/
-#include <QString>
-#include <QFile>
-
-#include <bautils.h>
-#include <locationservicedefines.h>
-#include "mylocationlogger.h"
-#include "lookupmaptiledb.h"
-
-_LIT( KSelectAllFrom, "SELECT * FROM " );
-_LIT(KQueryToDB,"SELECT * FROM cntmaptilelookuptable WHERE cntuid = %d AND source = %d");
-_LIT(KQueryGetCalendaIds,"SELECT cntuid FROM cntmaptilelookuptable WHERE source = %d");
-_LIT( KSelectfilepathFrom, "SELECT filepath FROM " );
-_LIT(KQueryMaptile, "SELECT filepath FROM cntmaptilelookuptable WHERE filepath = '%S'");
-// string 'where'
-_LIT( KStringWhere, " WHERE " );
-// string ' = '
-_LIT( KStringEqual, " = " );
-
-_LIT(KQueryByMaptileFetchingState,"SELECT * FROM cntmaptilelookuptable WHERE fetchingstatus = %d");
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::CLookupMapTileDatabase()
-// Default constructor.
-// -----------------------------------------------------------------------------
-//
-CLookupMapTileDatabase::CLookupMapTileDatabase()
-{
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::~CLookupMapTileDatabase()
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CLookupMapTileDatabase::~CLookupMapTileDatabase()
-{
-    __TRACE_CALLSTACK;// close the database
-    iItemsDatabase.Close();
-    // close the file session
-    iFsSession.Close();
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::~CLookupMapTileDatabase()
-// Creates an object of this class and pushes to cleanup stack.
-// -----------------------------------------------------------------------------
-//
-CLookupMapTileDatabase* CLookupMapTileDatabase::NewLC(
-        const TDesC& aLookupTableName)
-{
-    CLookupMapTileDatabase* self = new (ELeave) CLookupMapTileDatabase;
-    CleanupStack::PushL(self);
-    self->ConstructL(aLookupTableName);
-    return self;
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::NewL()
-// Creates an object of this class.
-// -----------------------------------------------------------------------------
-//
-CLookupMapTileDatabase* CLookupMapTileDatabase::NewL(
-        const TDesC& aLookupTableName)
-{
-    CLookupMapTileDatabase* self = CLookupMapTileDatabase::NewLC(
-            aLookupTableName);
-    CleanupStack::Pop(self);
-    return self;
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::ConstructL()
-// 2nd phase contructor.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::ConstructL(const TDesC& aLookupTableName)
-{
-    __TRACE_CALLSTACK;
-    User::LeaveIfError(iFsSession.Connect());
-
-    //create private path
-    User::LeaveIfError(iFsSession.CreatePrivatePath(RFs::GetSystemDrive()));
-    // private path with no drive on it
-    iFsSession.PrivatePath(iDbFileName);
-
-    TFindFile PrivFolder(iFsSession);
-    // find out the drive
-    if (KErrNone == PrivFolder.FindByDir(iDbFileName, KNullDesC))
-    {
-        iFsSession.MkDir(KLookupDbPath);
-        iDbFileName.Copy(KLookupDbPath);
-        iDbFileName.Append(aLookupTableName);
-
-        if (!BaflUtils::FileExists(iFsSession, iDbFileName))
-        { // no database exists so we make one
-            User::LeaveIfError(iItemsDatabase.Create(iFsSession, iDbFileName));
-            // and will create the only table needed for it
-            CreateTableL(iItemsDatabase);
-
-            //close the database
-            iItemsDatabase.Close();
-        }        
-    }
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::Open()
-// Opens the lookup database.
-// -----------------------------------------------------------------------------
-//
-TInt CLookupMapTileDatabase::Open()
-{
-    __TRACE_CALLSTACK;
-    return iItemsDatabase.Open(iFsSession, iDbFileName);
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::Close()
-// Closes the lookup database.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::Close()
-{
-    __TRACE_CALLSTACK;
-    iItemsDatabase.Close();
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::CreateTableL()
-// Creates a lookup table.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::CreateTableL(RDbDatabase& aDatabase)
-{
-    __TRACE_CALLSTACK;// Create a table definition
-    CDbColSet* columns = CDbColSet::NewLC();
-
-    // Add Columns
-
-    // Add uid column
-    columns->AddL(TDbCol(NCntColUid, EDbColUint32));
-
-    columns->AddL(TDbCol(NColSource, EDbColUint32));
-
-    // add file path type column
-    columns->AddL(TDbCol(NCntColFilePath, EDbColText16));
-    
-    //MK 
-    // add map tile fetching status to the db
-    columns->AddL(TDbCol(MapTileFetchingStatus, EDbColUint32));
-    
-
-    // Create a table
-    User::LeaveIfError(aDatabase.CreateTable(KMapTileLookupTable, *columns));
-
-    // cleanup the column set
-    CleanupStack::PopAndDestroy(columns);
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::CreateEntryL()
-// Creates an entry in the lookup table.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::CreateEntryL(const TLookupItem& aLookupItem)
-{
-    __TRACE_CALLSTACK;// create a query for the view
-    TFileName queryBuffer;
-    queryBuffer.Copy(KSelectAllFrom);
-    queryBuffer.Append(KMapTileLookupTable);
-
-    TInt ret = Open();
-    if (ret != KErrNone)
-    {
-		Close();
-        ret = Open();
-        if( ret != KErrNone )
-            return;
-       
-    }
-	 iItemsDatabase.Begin();
-    
-    RDbView myView;
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-
-    // Inert the item
-    myView.InsertL();
-    // set the fields
-    myView.SetColL(KColumncntUid, aLookupItem.iUid);
-    myView.SetColL(KColumnSource, aLookupItem.iSource);
-    myView.SetColL(KColumnFilePath, aLookupItem.iFilePath);
-    myView.SetColL(KColumnMapTileFetchingStatus, aLookupItem.iFetchingStatus); //MK
-
-    myView.PutL();
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-    iItemsDatabase.Commit();
-    Close();
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::ReSetEntryL()
-// Reset the entry with null value and get the used maptile path as part of aLookupItem.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::ReSetEntryL(TLookupItem &aLookupItem)
-{
-    TFileName queryBuffer;
-    queryBuffer.Format(KQueryToDB, aLookupItem.iUid, aLookupItem.iSource);
-    TInt ret = Open();
-    if (ret != KErrNone)
-    {
-        Close();
-        ret = Open();
-        if( ret != KErrNone )
-            return;
-    }
-    iItemsDatabase.Begin();
-
-    // Create a view of the table based on the query created.
-    RDbView myView;
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-
-    myView.EvaluateAll();
-    myView.FirstL();
-
-    if (myView.AtRow())
-    {
-        myView.GetL();
-        aLookupItem.iFilePath.Copy(myView.ColDes16(KColumnFilePath));
-        // found the entry. update it.
-        myView.UpdateL();
-        myView.SetColL(KColumnFilePath, KNullDesC);
-        myView.SetColL(KColumnMapTileFetchingStatus,
-                aLookupItem.iFetchingStatus); //MK
-        myView.PutL();
-    }
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-    iItemsDatabase.Commit();
-
-    Close();
-}
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::UpdateEntryL()
-// Updates an entry in the lookup table.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::UpdateEntryL(const TLookupItem& aLookupItem)
-{
-    __TRACE_CALLSTACK;// Create the query to find the row to be updated.
-    TFileName queryBuffer;
-    queryBuffer.Format(KQueryToDB, aLookupItem.iUid, aLookupItem.iSource);
-    TInt ret = Open();
-    if (ret != KErrNone)
-    {
-		Close();
-        ret = Open();
-        if( ret != KErrNone )
-            return;       
-    }
-	 iItemsDatabase.Begin();
-
-    // Create a view of the table based on the query created.
-    RDbView myView;
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-
-    myView.EvaluateAll();
-    myView.FirstL();
-    
-    if (myView.AtRow())
-    {
-        // found the entry. update it.
-        myView.UpdateL();
-        myView.SetColL(KColumnFilePath, aLookupItem.iFilePath);
-        myView.SetColL(KColumnMapTileFetchingStatus, aLookupItem.iFetchingStatus); //MK
-        myView.PutL();
-    } 
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-    iItemsDatabase.Commit();
-
-    Close();  
-
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::DeleteEntryL()
-// Deletes an entry from the lookup table.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::DeleteEntryL(TLookupItem& aLookupItem)
-{
-    __TRACE_CALLSTACK;// Create the query to find the row to be deleted.
-
-    TFileName queryBuffer;
-    queryBuffer.Format(KQueryToDB, aLookupItem.iUid, aLookupItem.iSource);
-
-    TInt ret = Open();
-    if (ret != KErrNone)
-    {
-		Close();
-        ret = Open();
-        if( ret != KErrNone )
-            return;
-    }
-	 iItemsDatabase.Begin();
-
-    RDbView myView;
-    // query buffer finds only the selected item row.
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-
-    myView.EvaluateAll();
-
-    // positions the cursor on the first row of the rowset
-    myView.FirstL();
-
-    // Delete the entry found.
-    if (myView.AtRow())
-    {
-        myView.GetL();
-        if (aLookupItem.iUid == myView.ColUint(KColumncntUid))
-        {
-            aLookupItem.iFilePath.Copy(myView.ColDes16(KColumnFilePath));
-            
-        }
-        myView.DeleteL();
-    }
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-    iItemsDatabase.Commit();
-    // compacts the databse, by physicaly removing deleted data.
-    iItemsDatabase.Compact();
-
-    Close();
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::DeleteMapTileL()
-// Deletes an maptile if there's no reference to maptile in lookupdb
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::DeleteMapTileL( const TLookupItem& aLookupItem)
-{
-    __TRACE_CALLSTACK;// Create the query to find the row to be deleted.
-
-    TFileName queryBuffer;    
-    queryBuffer.Format(KQueryMaptile, &aLookupItem.iFilePath);
-    
-    TInt ret = Open();
-    if (ret != KErrNone)
-    {
-       Close();
-       ret = Open();
-       if( ret != KErrNone )
-           return;
-    }
-    
-    iItemsDatabase.Begin();
-
-    RDbView myView;
-    // query buffer finds only the selected item row.
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-
-    myView.EvaluateAll();
-
-    // positions the cursor on the first row of the rowset
-    myView.FirstL();
-
-    // Delete if no reference to maptile
-    if (!myView.AtRow())
-    {
-        QString filePath =  QString::fromUtf16( aLookupItem.iFilePath.Ptr(), aLookupItem.iFilePath.Length() );
-        //delete all releted  maptile 
-        QString temp=filePath;
-        temp.append(MAPTILE_IMAGE_PORTRAIT);       
-        QFile file;
-        file.remove(temp);
-        
-        temp=filePath;
-        temp.append(MAPTILE_IMAGE_CONTACT);
-        temp.append(MAPTILE_IMAGE_LANDSCAPE);
-        file.remove(temp);
-        
-        temp=filePath;
-        temp.append(MAPTILE_IMAGE_CALENDAR);
-        temp.append(MAPTILE_IMAGE_LANDSCAPE);
-        file.remove(temp);
-        
-        temp=filePath;
-        temp.append(MAPTILE_IMAGE_HURRIGANES);         
-        file.remove(temp);
-         
-       // ret = iFsSession.Delete(aLookupItem.iFilePath);     
-    }
-        
-    CleanupStack::PopAndDestroy(&myView); // myView
-
-    Close();
-}
-
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::FindEntriesByMapTileFetchingStatusL()
-// Finds a list of lookup items given a landmark uid.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::FindEntriesByMapTileFetchingStateL(const TUint32 aFetchingState,
-        RArray<TLookupItem>& aLookupItemArray)
-{
-    __TRACE_CALLSTACK;// Create a query to find the item.
-    TFileName queryBuffer;
-    queryBuffer.Format(KQueryByMaptileFetchingState,aFetchingState);
-    
-    TInt ret = Open();
-        if (ret != KErrNone)
-        {
-           Close();
-           ret = Open();
-           if( ret != KErrNone )
-               return;
-        }
-      iItemsDatabase.Begin();
-
-    
-    // Create a view of the table with the above query.
-    RDbView myView;
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-    myView.EvaluateAll();
-    myView.FirstL();
-
-    while (myView.AtRow())
-    {
-        // Item found. get the details.
-        myView.GetL();
-        TLookupItem newItem;
-        newItem.iUid = myView.ColUint(KColumnUid);
-        newItem.iSource = myView.ColUint(KColumnSource);
-        aLookupItemArray.Append(newItem);
-        myView.NextL();
-    }
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::GetAllCalendarIdsL()
-// Gets the list of calendar ids .
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::GetAllCalendarIdsL( RArray<TUint32>& aIdArray )
-{
-    __TRACE_CALLSTACK;// Create a query to find the item.
-    TFileName queryBuffer;
-    queryBuffer.Format( KQueryGetCalendaIds, ESourceCalendar );
-    
-    TInt ret = Open();
-        if (ret != KErrNone)
-        {
-           Close();
-           ret = Open();
-           if( ret != KErrNone )
-               return;
-        }
-    iItemsDatabase.Begin();
-
-    
-    // Create a view of the table with the above query.
-    RDbView myView;
-    myView.Prepare( iItemsDatabase, TDbQuery( queryBuffer ) );
-    CleanupClosePushL( myView );
-    myView.EvaluateAll();
-    myView.FirstL();
-
-    while( myView.AtRow() )
-    {
-        // Item found. get the details.
-        myView.GetL();
-        TUint32 id;
-        id = myView.ColUint( KColumnUid );
-        aIdArray.Append( id );
-        myView.NextL();
-    }
-
-    CleanupStack::PopAndDestroy( &myView ); // myView
-    Close();
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::FindEntryL()
-// Finds an entry in the lookup table.
-// -----------------------------------------------------------------------------
-//
-TBool CLookupMapTileDatabase::FindEntryL(TLookupItem& aLookupItem)
-{
-    __TRACE_CALLSTACK;// used to store return value
-    TBool retVal = EFalse;
-    // Create a query to find the item.
-    TFileName queryBuffer;
-    queryBuffer.Format(KQueryToDB, aLookupItem.iUid, aLookupItem.iSource);
-
-   TInt ret = Open();
-    if (ret != KErrNone)
-    {
-		Close();
-        ret = Open();
-        if( ret != KErrNone )
-            return EFalse;
-       
-    }
-	 iItemsDatabase.Begin();
-
-    // Create a view of the table with the above query.
-    RDbView myView;
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-    myView.EvaluateAll();
-    myView.FirstL();
-
-    if (myView.AtRow())
-    {
-        // Item found. get the details.
-        myView.GetL();
-        retVal = ETrue;
-    }
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-    Close();
-    return retVal;
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::FindEntryByFIlePathLL()
-// Finds an entry in the lookup table for maptile image file
-// -----------------------------------------------------------------------------
-//
-TBool CLookupMapTileDatabase::FindEntryByFilePathL(const TDesC& aFilePath)
-{
-    __TRACE_CALLSTACK;// used to store return value
-    TBool retVal = EFalse;
-   
-    TInt ret = Open();
-    if (ret != KErrNone)
-    {
-        Close();
-        ret = Open();
-        if( ret != KErrNone )
-            return EFalse;       
-    }
-    
-    iItemsDatabase.Begin();
-    
-    // Create a query to find the item.
-    TFileName queryBuffer;
-    _LIT(KFormatSpec, "%S%S%S%S%S'%S'");
-    
-    queryBuffer.Format(KFormatSpec, 
-        &KSelectfilepathFrom(), 
-        &KMapTileLookupTable(),
-        &KStringWhere(),
-        &NCntColFilePath(),
-        &KStringEqual(),
-        &aFilePath);
-    
-    // Create a view of the table with the above query.
-    RDbView myView;
-    TInt retPrep = myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-    myView.EvaluateAll();
-    myView.FirstL();
-
-    if (myView.AtRow())
-    {
-        // Item found, return true
-        retVal = ETrue;
-    }
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-    Close();
-
-    return retVal;
-}
-
-// End of file
-
--- a/locationdataharvester/mylocationsengine/src/maptileinterface.cpp	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/mylocationsengine/src/maptileinterface.cpp	Mon Oct 04 00:10:56 2010 +0300
@@ -25,7 +25,6 @@
 #include "maptileinterface.h"
 #include "mylocationlogger.h"
 #include "mylocationsdefines.h"
-#include "lookupmaptiledb.h"
 #include <math.h>
 
 //Invalid latitude & longitude value
--- a/locationdataharvester/mylocationsengine/src/mylocationsengine.cpp	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationdataharvester/mylocationsengine/src/mylocationsengine.cpp	Mon Oct 04 00:10:56 2010 +0300
@@ -20,6 +20,7 @@
 #include <QFile>
 #include <f32file.h>
 #include <calchangecallback.h> 
+#include <caliterator.h>
 #include <cntitem.h>
 #include <cntfldst.h>
 #include <EPos_CPosLmDatabaseManager.h>
@@ -28,9 +29,11 @@
 #include <f32file.h>
 #include <locationservicedefines.h>
 #include <e32property.h>
+#include <centralrepository.h> 
 #include "contactsubscriber.h"
 #include "calendarsubscriber.h"
 #include "mylocationsengine.h"
+#include "mylocationsdefines.h"
 #include "geocodeupdate.h" //header for GeocodeUpdate class
 //handle for CMyLocationsHistoryDbObserver class
 #include "mylocationlogger.h"
@@ -46,7 +49,13 @@
 //Protocol : [appid-addresstype-maptilestatus]
 _LIT8( KMaptileStatusFormat, "%d-%d-%d" );
 const TInt KProtocolBufferSize = 16;
+static const TInt startDateArray[2] = { 1900, 1};
+static const TInt endDateArray[2] = { 2100, 1};
+// Maptile interface uid
+const TUid KUidMapTileInterface = { 0x2002E6E8 };
 
+// Central Repository Key IDs
+const TInt KMaptileDbSyncState  = 0x2;
 const QString KSpace(" ");
 
 // ============================ MEMBER FUNCTIONS ===============================
@@ -89,7 +98,11 @@
     
     MYLOCLOGSTRING("iMapTileInterface = CMapTileInterface::NewL()");
     //Maptile Db instance
-    iMaptileDatabase = CLookupMapTileDatabase::NewL(KMapTileLookupDatabaseName);
+    iMaptileDatabase = new LookupMapTileDatabase();
+    if( !iMaptileDatabase->open() )
+    {
+        User::Leave( KErrUnknown );
+    }
 
     MYLOCLOGSTRING("Maptile Db instance created ");
 	
@@ -311,6 +324,12 @@
         // create a calendar entry view with the opened session
         iCalView = CCalEntryView::NewL(*iCalSession);
         StartCalenderChangeNotifierL();
+        TInt value=0;
+        MaptileDbSyncStatusL(EMapTileDbStatusGet, value);
+        if(value==1)
+        {
+            RefreshCalendarEntryListL();            
+        }
     }
     else
     {
@@ -398,12 +417,12 @@
             }
 
             //Update the entry with inprogress status
-            TLookupItem lookupItem;
+            MaptileLookupItem lookupItem;
             lookupItem.iUid = iAddressInfo[index]->iUid;
             lookupItem.iSource = type;
-            lookupItem.iFilePath.Zero();
+            lookupItem.iFilePath.clear();
             lookupItem.iFetchingStatus = EMapTileFetchingInProgress;
-            iMaptileDatabase->UpdateEntryL( lookupItem );
+            iMaptileDatabase->updateEntry( lookupItem );
             
             //Request for maptile fetching
             if( contactAddressLm )
@@ -434,30 +453,28 @@
 void CMyLocationsEngine::SubscribeFromCalendarL(TInt aId)
 {
     __TRACE_CALLSTACK;
+    if( !iMaptileGeocoderPluginAvailable )
+    {
+      return;
+    }
     iLastCalendarId = aId;
+    TInt repValue=0;
+    MaptileDbSyncStatusL(EMapTileDbStatusGet , repValue);
+    if (  repValue == 1 )
+    {              
+        return;              
+    }
     for ( int index =0;iMapTileRequestQueue.Count()>index ;index++)
     {
-        if( iLastCalendarId == iMapTileRequestQueue[index]->iUId )
-        {            
-            return;
-        }
-    }
-    
-    CCalEntry* calEntry = NULL;
-    calEntry = iCalView->FetchL(aId);
-    CleanupStack::PushL(calEntry);
-    TPtrC address(calEntry->LocationL());
-    if( address.Length()>0 )
-    {
-        TLookupItem lookupItem;
-        lookupItem.iUid = aId;
-        lookupItem.iSource = ESourceCalendar;
-        lookupItem.iFilePath.Zero();
-        lookupItem.iFetchingStatus = EMapTileFetchingInProgress;
-        iMaptileDatabase->UpdateEntryL( lookupItem );
-        RequestMapTileImageL( address, ESourceCalendar, aId , EChangeModify );
-    }
-    CleanupStack::PopAndDestroy(calEntry);
+       if( iLastCalendarId == iMapTileRequestQueue[index]->iUId )
+       {            
+           return;
+       }
+    }    
+    TCalChangeEntry calChangeEntry ;
+    calChangeEntry.iEntryId=aId;
+    calChangeEntry.iChangeType=MCalChangeCallBack2::EChangeModify;
+    CalenderEntryModifyL(calChangeEntry); 
 }
 // -----------------------------------------------------------------------------
 // CMyLocationsEngine::StartCalenderChangeNotifierL()
@@ -471,31 +488,28 @@
     // fall under the timeframe one year past and one year ahead of the current time.
     if (iCalSession)
     {
-        MYLOCLOGSTRING("iCalSession is not null");
-        TTime currentTime;
-        currentTime.HomeTime();
-
-        TTime startTime = currentTime - TTimeIntervalYears(1);
-        TTime endTime = currentTime + TTimeIntervalYears(1);
-
-        TCalTime calStartTime;
-        calStartTime.SetTimeLocalL(startTime);
+        // Subscribe for notification on changes in the opened session (file).
+        TCalTime startDate;
+        TCalTime endDate;
+        TDateTime startTime = TDateTime(
+                startDateArray[0], static_cast<TMonth>(startDateArray[1]),
+                0, 0, 0, 0, 0);
+        TDateTime endTime = TDateTime(
+                endDateArray[0], static_cast<TMonth>(endDateArray[1]),
+                0, 0, 0, 0, 0);
         
-        MYLOCLOGSTRING("SetTimeLocalL(startTime)");
-
-        TCalTime calEndTime;
-        calEndTime.SetTimeLocalL(endTime);
+        startDate.SetTimeUtcL(startTime);
+        endDate.SetTimeUtcL(endTime);
+        CalCommon::TCalTimeRange searchTimeRange(startDate, endDate);
         
-        MYLOCLOGSTRING("SetTimeLocalL(endTime)");
-
-        // set the filter for modification tracking
-        CCalChangeNotificationFilter *filter =
-                CCalChangeNotificationFilter::NewL(
-                        MCalChangeCallBack2::EChangeEntryAll, ETrue,
-                        CalCommon::TCalTimeRange(calStartTime, calEndTime));
-        MYLOCLOGSTRING(" CCalChangeNotificationFilter::NewL()");
-        // 'this' object implements MCalChangeCallBack
+        CCalChangeNotificationFilter* filter = NULL;
+        filter = CCalChangeNotificationFilter::NewL(
+                MCalChangeCallBack2::EChangeEntryAll, true, searchTimeRange);
+        
         iCalSession->StartChangeNotification(*this, *filter);
+        
+        // Cleanup.
+        delete filter;
     }
 }
 
@@ -543,7 +557,10 @@
         delete iCalenderNotification;
         iCalenderNotification = NULL;
     }
-    
+    if( !iMaptileGeocoderPluginAvailable )
+    {
+        return;
+    }
     // get entries associated with this UID
     for (int i = 0; i < aChangeItems.Count(); i++)
     {
@@ -551,8 +568,9 @@
         // Check if this is some undefined change in calendar db. 
         if( aChangeItems[0].iChangeType == EChangeUndefined && aChangeItems[0].iEntryType == EChangeEntryAll )
         {
+             MYLOCLOGSTRING("Refresh the calendar for EChangeUndefined ");
             // Refresh the calendar related entries in the location and maptiledb.
-            RefreshCalendarEntryListL();
+            RefreshCalendarEntryListL();            
             break;
         }
         TCalChangeEntry calChangeEntry = aChangeItems[i];
@@ -579,8 +597,10 @@
             break;
         }
         case EChangeDelete:
-        {
-            TLookupItem lookupItem;
+        {           
+            
+            iMyLocationsDatabaseManager->UpdateCalendarLocationById(calChangeEntry.iEntryId,EEntryDeleted,KNullDesC);
+            MaptileLookupItem lookupItem;
             lookupItem.iSource = ESourceCalendar;
             lookupItem.iUid = calChangeEntry.iEntryId;
             TRAP_IGNORE(ManipulateMapTileDataBaseL(lookupItem));           
@@ -599,15 +619,66 @@
 //
 void CMyLocationsEngine::RefreshCalendarEntryListL()
 {
+    __TRACE_CALLSTACK;
+    TInt repValue=1;
+    MaptileDbSyncStatusL(EMapTileDbStatusSet , repValue);
+    // Deletes all the invalid calendar entries from location and maptile lookup db.
+    DeleteInvalidCalendarEntriesL();
+
+    CCalIter* calIter = CCalIter::NewL(*iCalSession);
+    CleanupStack::PushL( calIter );
+    TPtrC8 iterUid = calIter->FirstL();
+    while ( iterUid != KNullDesC8 )
+    {
+    
+        MYLOCLOGSTRING("while ( iterUid != KNullDesC8 )");
+        RPointerArray<CCalEntry> entryArray;
+        iCalView->FetchL( iterUid, entryArray );
+        MYLOCLOGSTRING1("iCalView->FetchL :entryArray.Count()->%d",entryArray.Count());
+        // get entries associated with this UID
+        for( int i =0; i<entryArray.Count() ; i++ )
+        {              
+            TCalChangeEntry calChangeEntry;            
+            calChangeEntry.iEntryId = entryArray[i]->LocalUidL() ;
+            MaptileLookupItem lookupItem;
+            lookupItem.iUid = entryArray[i]->LocalUidL() ;
+            lookupItem.iSource = ESourceCalendar;
+            if( iMaptileDatabase->findEntry(lookupItem ) )
+            {
+                calChangeEntry.iChangeType = EChangeModify;
+                TRAP_IGNORE( CalenderEntryModifyL(calChangeEntry) ) ;
+            }
+            else
+            {
+                calChangeEntry.iChangeType = EChangeAdd;
+                TRAP_IGNORE(CalenderEntryAddedL(calChangeEntry));
+            }
+        }
+        iterUid.Set(calIter->NextL());
+        entryArray.ResetAndDestroy();
+    }    
+    CleanupStack::PopAndDestroy( calIter );
+    repValue=0;
+    MaptileDbSyncStatusL(EMapTileDbStatusSet , repValue);
+}
+
+// -----------------------------------------------------------------------------
+// CMyLocationsEngine::DeleteInvalidCalendarEntriesL()
+// -----------------------------------------------------------------------------
+//
+void CMyLocationsEngine::DeleteInvalidCalendarEntriesL()
+{
+     __TRACE_CALLSTACK;
     //Get all the calendar ids and check its validity. 
     //Delete if they are no more valid.
-    RArray<TUint32> ids;
-    iMaptileDatabase->GetAllCalendarIdsL( ids );
-    for( TInt i = 0; i < ids.Count(); i++ )
+    QList<quint32> ids;
+    iMaptileDatabase->getAllCalendarIds( ids );
+    for( TInt i = 0; i < ids.count(); i++ )
     {
         if( !IsCalendarEntryValidL( ids[i] ) )
         {
-            TLookupItem lookupItem;
+            iMyLocationsDatabaseManager->UpdateCalendarLocationById(ids[i],EEntryDeleted,KNullDesC);
+            MaptileLookupItem lookupItem;
             lookupItem.iSource = ESourceCalendar;
             lookupItem.iUid = ids[i];
             TRAP_IGNORE( ManipulateMapTileDataBaseL( lookupItem ) );           
@@ -624,8 +695,44 @@
 //
 TBool CMyLocationsEngine::IsCalendarEntryValidL( TUint32 aId )
 {
+     __TRACE_CALLSTACK;
     return ( ( iCalView->FetchL( aId ) == NULL ) ? EFalse:ETrue );
 }
+
+// -----------------------------------------------------------------------------
+// CMyLocationsEngine::MaptileDbSyncStatusL()
+// -----------------------------------------------------------------------------
+//
+void CMyLocationsEngine::MaptileDbSyncStatusL(const TCenrepSetting& aSettingType , TInt& aValue)
+{
+     __TRACE_CALLSTACK;
+    CRepository* centralRepository = NULL; 
+    centralRepository = CRepository::NewL( KUidMapTileInterface ) ;
+    CleanupStack::PushL( centralRepository );
+    switch(aSettingType)
+    {
+        case EMapTileDbStatusGet:
+        {
+            centralRepository->Get( KMaptileDbSyncState , aValue );
+            break;
+        }
+        case EMapTileDbStatusSet:
+        {
+            centralRepository->Set( KMaptileDbSyncState , aValue );
+            MaptileLookupItem item;
+            item.iSource = ESourceCalendar;
+            item.iUid = iLastCalendarId;   
+            iMaptileDatabase->getEntry(item);
+            if(iLastCalendarId >0)
+            {
+                PublishEntry(iLastCalendarId,item);
+            }
+            break;
+        }
+    }    
+    CleanupStack::PopAndDestroy(centralRepository);
+}
+
 // -----------------------------------------------------------------------------
 // CMyLocationsEngine::CalenderEntryAddedL()
 // -----------------------------------------------------------------------------
@@ -635,23 +742,27 @@
     __TRACE_CALLSTACK;
     
     TUint32 entryId=0;
-    entryId=aCalChangeEntry.iEntryId;
+    entryId=aCalChangeEntry.iEntryId;   
     //create entry in the data base and maintain a fetching state.
-    TLookupItem lookupItem;
+    MaptileLookupItem lookupItem;
     lookupItem.iUid = entryId ;
     lookupItem.iSource = ESourceCalendar;
-    lookupItem.iFilePath.Zero();
+    lookupItem.iFilePath.clear();
     lookupItem.iFetchingStatus = EMapTileFetchingInProgress;     
-    TRAP_IGNORE( iMaptileDatabase->CreateEntryL(lookupItem) );
+    iMaptileDatabase->createEntry(lookupItem) ;
     CCalEntry* calEntry = NULL;
     calEntry = iCalView->FetchL( entryId );
-    CleanupStack::PushL(calEntry);
-    TPtrC address(calEntry->LocationL());     
-    if (address.Length() > 0)
+    if(calEntry!=NULL)
     {
-        RequestMapTileImageL( address, ESourceCalendar, entryId , EChangeAdd );
-    }  
-    CleanupStack::PopAndDestroy(calEntry);
+        CleanupStack::PushL(calEntry);
+        TPtrC address(calEntry->LocationL());     
+        iMyLocationsDatabaseManager->UpdateCalendarLocationById(entryId,EEntryAdded,address);
+        if (address.Length() > 0)
+        {
+            RequestMapTileImageL( address, ESourceCalendar, entryId , EChangeAdd );
+        }  
+        CleanupStack::PopAndDestroy(calEntry);
+    }
 }
 
 // -----------------------------------------------------------------------------
@@ -663,39 +774,115 @@
     __TRACE_CALLSTACK;
     TUint32 entryId = 0;
     entryId = aCalChangeEntry.iEntryId;
-    TLookupItem lookupItem;
+    MaptileLookupItem lookupItem;
     lookupItem.iSource = ESourceCalendar;
-    lookupItem.iUid = entryId;
+    lookupItem.iUid = entryId;   
+    iMaptileDatabase->getEntry(lookupItem);
+    QString maptilePath= lookupItem.iFilePath;
     CCalEntry* calEntry = NULL;
     calEntry = iCalView->FetchL(entryId);
     CleanupStack::PushL(calEntry);
-    if(iGeocodeUpdate->isGeocodeNotAvailable(entryId))
-    {        
-        TPtrC address(calEntry->LocationL());
-        if (iMyLocationsDatabaseManager->CheckIfAddressChanged(address, entryId,
-                ESourceCalendar))
-        {
-            lookupItem.iFilePath.Zero();
-            lookupItem.iFetchingStatus = EMapTileFetchingInProgress;
-            TRAP_IGNORE( iMaptileDatabase->ReSetEntryL(lookupItem) );
-            if (address.Length() > 0)
-            {
-                RequestMapTileImageL(address, ESourceCalendar, entryId , EChangeModify);
-            }
-            else
-            {
-                UpdateDatabaseL(NULL, entryId, ESourceCalendar, EEntryDeleted);
-            }
-            if ( lookupItem.iFilePath.Length() > 0 )
-            {
-                iMaptileDatabase->DeleteMapTileL(lookupItem);
-            }
+    TPtrC address(calEntry->LocationL());
+    TBool retGeo=EFalse;
+    retGeo=iGeocodeUpdate->isGeocodeNotAvailable(entryId);
+    TBool addressChanged=EFalse;
+    addressChanged=iMyLocationsDatabaseManager->CheckIfAddressChanged(address, entryId,
+                ESourceCalendar);
+    // retGeo , true if geo-code not available otherwise false.
+    if(!retGeo )
+       {       
+           if( lookupItem.iUserSetting && addressChanged )
+           {
+               //sync to local db 
+               //reset the user setting flag
+               //update maptile all previous status
+               //return;
+               iMaptileDatabase->updateEntry(lookupItem);
+               iLastCalendarId=entryId;
+               PublishEntry(entryId,lookupItem);
+               //TRAP_IGNORE(iMyLocationsDatabaseManager->UpdateCalendarLocationL( address, entryId,
+                //                                     ESourceCalendar) );  
+           }
+           else if(lookupItem.iFetchingStatus==EMapTileFetchingInProgress || lookupItem.iFetchingStatus==EMapTileFetchingNetworkError)
+           {               
+               //normal scenario ,
+               // go for geo-coding 
+               //return;
+               lookupItem.iFilePath.clear();
+               lookupItem.iFetchingStatus = EMapTileFetchingInProgress;     
+               iMaptileDatabase->updateEntry(lookupItem) ;
+               TRAP_IGNORE( UpdateDatabaseL( NULL, 
+                   entryId, ESourceCalendar, EEntryDeleted ) );               
+               if (maptilePath.length() > 0)
+               {
+                   lookupItem.iFilePath=maptilePath;
+                  iMaptileDatabase->deleteMapTile(lookupItem);
+               }               
+               RequestMapTileImageL(address, ESourceCalendar, entryId, EChangeModify);
+           }
+           else
+           {
+               PublishEntry(entryId,lookupItem);
+           }
+       }
+       else
+       {
+           if(addressChanged)
+           {
+                // go for geo-coding 
+                // return;
+                lookupItem.iFilePath.clear();
+                lookupItem.iFetchingStatus = EMapTileFetchingInProgress;
+                iMaptileDatabase->updateEntry(lookupItem);
+                TRAP_IGNORE( UpdateDatabaseL( NULL,
+                                entryId, ESourceCalendar, EEntryDeleted ) );
+                if (maptilePath.length() > 0)
+                {
+                    lookupItem.iFilePath = maptilePath;
+                    iMaptileDatabase->deleteMapTile(lookupItem);
+                }
+                RequestMapTileImageL(address, ESourceCalendar, entryId,
+                        EChangeModify);
+           }
+           else 
+           {
+               // dont do anything  
+               QLookupItem locationItem;
+               LocationDataLookupDb lookupDb;
+               if(lookupDb.findEntryBySourceIdAndType(locationItem))
+               {
+                  MYLOCLOGSTRING("entry found in loocation lookupdb ");
+                  iGeocodeUpdate->updateGeocodeToCalenderDB(entryId,locationItem.mLatitude,locationItem.mLongitude);
+               }  
+               iLastCalendarId=entryId;
+               PublishEntry(entryId,lookupItem);
+                
+               //return;
+           }
+           
+       }
+       CleanupStack::PopAndDestroy(calEntry);       
     
-        }        
-    }   
-    CleanupStack::PopAndDestroy(calEntry);
 }
-
+// -----------------------------------------------------------------------------
+// CMyLocationsEngine::PublishEntry()
+//  maptile db updated, publishing the calendar entry.
+// -----------------------------------------------------------------------------
+//
+void CMyLocationsEngine::PublishEntry(TInt32 aEntryId, MaptileLookupItem& aLookupItem)
+{
+    __TRACE_CALLSTACK;
+    //Publish the maptile status ,if it was from calendar
+    if (iLastCalendarId == aEntryId)
+    {
+        TBuf8<KProtocolBufferSize> buffer;
+        buffer.Zero();
+        buffer.Format(KMaptileStatusFormat, iLastCalendarId,
+            aLookupItem.iSource, aLookupItem.iFetchingStatus);
+        RProperty::Set(KMaptileStatusPublish, EMaptileStatusInteger,
+                buffer);
+    }
+}
 // -----------------------------------------------------------------------------
 // CMyLocationsEngine::HandleDatabaseEventL()
 // Callback that provides information about the contact database change event.
@@ -721,7 +908,7 @@
 void CMyLocationsEngine::TriggerMaptileRequestL(TContactDbObserverEvent& aEvent)
 {
     __TRACE_CALLSTACK;
-    TLookupItem lookupItem;      
+    MaptileLookupItem lookupItem;      
     lookupItem.iUid = aEvent.iContactId;
     // If contact is deleted delete from mylocations db
     if ( aEvent.iType == EContactDbObserverEventContactDeleted || aEvent.iType == EContactDbObserverEventOwnCardDeleted )
@@ -812,16 +999,16 @@
                     aEvent.iContactId, ESourceContactsPref) )
 
                 {
-                    lookupItem.iFilePath.Zero();
+                    lookupItem.iFilePath.clear();
                     lookupItem.iFetchingStatus = EMapTileFetchingInProgress;
-                    TRAP_IGNORE( iMaptileDatabase->ReSetEntryL(lookupItem) );
+                    iMaptileDatabase->resetEntry(lookupItem);
                     
                     RequestMapTileImageL(*preferedAddressLm, ESourceContactsPref,
                             aEvent.iContactId, iEventType );
 
-                    if ( lookupItem.iFilePath.Length() > 0 )
+                    if ( lookupItem.iFilePath.isEmpty() != false )
                     {
-                        iMaptileDatabase->DeleteMapTileL(lookupItem);
+                        iMaptileDatabase->deleteMapTile(lookupItem);
                     }
                     
                 }
@@ -844,15 +1031,15 @@
                 if ( iMyLocationsDatabaseManager->CheckIfAddressChanged(*homeAddressLm,
                         aEvent.iContactId, ESourceContactsHome) )
                 {
-                    lookupItem.iFilePath.Zero();
+                    lookupItem.iFilePath.clear();
                     lookupItem.iFetchingStatus = EMapTileFetchingInProgress;
-                    TRAP_IGNORE( iMaptileDatabase->ReSetEntryL(lookupItem) )
+                    iMaptileDatabase->resetEntry(lookupItem);
                     //remove entry from databse                    
                     RequestMapTileImageL(*homeAddressLm, ESourceContactsHome, aEvent.iContactId,
                         iEventType);
-                    if (lookupItem.iFilePath.Length() > 0) 
+                    if (lookupItem.iFilePath.isEmpty() != false ) 
                     {
-                        iMaptileDatabase->DeleteMapTileL(lookupItem);
+                        iMaptileDatabase->deleteMapTile(lookupItem);
                     }                 
                 }
             }
@@ -876,15 +1063,15 @@
                 if ( iMyLocationsDatabaseManager->CheckIfAddressChanged(*workAddressLm,
                         aEvent.iContactId, ESourceContactsWork) )
                 {
-                    lookupItem.iFilePath.Zero();
+                    lookupItem.iFilePath.clear();
                     lookupItem.iFetchingStatus = EMapTileFetchingInProgress;
-                    TRAP_IGNORE( iMaptileDatabase->ReSetEntryL(lookupItem) )
+                    iMaptileDatabase->resetEntry(lookupItem);
 
                     RequestMapTileImageL(*workAddressLm, ESourceContactsWork,
                             aEvent.iContactId, iEventType);
-                    if (lookupItem.iFilePath.Length() > 0) 
+                    if (lookupItem.iFilePath.isEmpty() != false ) 
                     {
-                        iMaptileDatabase->DeleteMapTileL(lookupItem);
+                        iMaptileDatabase->deleteMapTile(lookupItem);
                     }
                 } 
             }
@@ -899,9 +1086,9 @@
         }    
         case EContactDbObserverEventContactAdded:
         {
-            TLookupItem lookupItem;
+            MaptileLookupItem lookupItem;
             lookupItem.iUid = aEvent.iContactId;
-            lookupItem.iFilePath.Zero();
+            lookupItem.iFilePath.clear();
             lookupItem.iFetchingStatus = EMapTileFetchingInProgress;
             
             MYLOCLOGSTRING("EContactDbObserverEventContactAdded" );
@@ -909,21 +1096,21 @@
             {
                 //create entry in the data base and maintain a fetching state.
                 lookupItem.iSource = ESourceContactsPref;
-                iMaptileDatabase->CreateEntryL(lookupItem);
+                iMaptileDatabase->createEntry(lookupItem);
                 RequestMapTileImageL(*preferedAddressLm, ESourceContactsPref,
                         aEvent.iContactId, iEventType);
             }
             if (homeAddressLm)
             {
                 lookupItem.iSource = ESourceContactsHome;
-                iMaptileDatabase->CreateEntryL(lookupItem);
+                iMaptileDatabase->createEntry(lookupItem);
                 RequestMapTileImageL(*homeAddressLm, ESourceContactsHome,
                         aEvent.iContactId, iEventType);
             }
             if (workAddressLm)
             {
                 lookupItem.iSource = ESourceContactsWork;
-                iMaptileDatabase->CreateEntryL(lookupItem);
+                iMaptileDatabase->createEntry(lookupItem);
                 RequestMapTileImageL(*workAddressLm, ESourceContactsWork,
                         aEvent.iContactId, iEventType);
             }
@@ -1304,7 +1491,7 @@
     {
         MYLOCLOGSTRING1("No.of RequestQueue - %d",iMapTileRequestQueue.Count());
        
-	    TLookupItem lookupItem;
+	    MaptileLookupItem lookupItem;
         lookupItem.iSource = iMapTileRequestQueue[0]->iAddressType;
         lookupItem.iUid = iMapTileRequestQueue[0]->iUId;
 
@@ -1313,13 +1500,12 @@
             UpdateGeoCodeToAppDataBase( aLatitude, aLongitude );
             
             TBool flag = EFalse;
-            TRAP_IGNORE( flag = iMaptileDatabase->FindEntryByFilePathL(aMapTilePath) );
+            QString str = QString( (QChar*)aMapTilePath.Ptr(), aMapTilePath.Length());
+            flag = iMaptileDatabase->findEntryByFilePath( str );
             if ( flag )
             {  
                 MYLOCLOGSTRING1("%S - found in the DB",&aMapTilePath);
-            
-             				
-                lookupItem.iFilePath.Copy(aMapTilePath);
+                lookupItem.iFilePath = QString( (QChar*)aMapTilePath.Ptr(), aMapTilePath.Length());
                 lookupItem.iFetchingStatus = EMapTileFectchingCompleted;
                 TRAP_IGNORE( UpdateMaptileDatabaseL(iMapTileRequestQueue[0]->iEventType, lookupItem ) );              
                 //Publish the maptile status
@@ -1400,12 +1586,12 @@
     //Forward the event for maptile fetching only if maptile plugin available
     if( iMaptileGeocoderPluginAvailable )
     {
-        RArray<TLookupItem> iLookupItems;
-        iMaptileDatabase->FindEntriesByMapTileFetchingStateL((TUint32)EMapTileFetchingNetworkError,
+        QList<MaptileLookupItem> iLookupItems;
+        iMaptileDatabase->findEntriesByMapTileFetchingState((quint32)EMapTileFetchingNetworkError,
                                             iLookupItems);
-        for( TUint32 i = 0; i < iLookupItems.Count(); i++ )
+        for( TUint32 i = 0; i < iLookupItems.count(); i++ )
         {
-            TLookupItem iItem = iLookupItems[i];
+            MaptileLookupItem iItem = iLookupItems[i];
             switch( iItem.iSource )
             {
                 // Get the home address details
@@ -1456,7 +1642,7 @@
                         }
                         else
                         {
-                            iMaptileDatabase->DeleteEntryL( iItem );
+                            iMaptileDatabase->deleteEntry( iItem );
                         }
                      }
                      break;
@@ -1486,27 +1672,23 @@
 
         MYLOCLOGSTRING1("No.of RequestQueue - %d",iMapTileRequestQueue.Count());
 
-        TLookupItem lookupItem;
+        MaptileLookupItem lookupItem;
         lookupItem.iSource = iMapTileRequestQueue[0]->iAddressType;
         lookupItem.iUid = iMapTileRequestQueue[0]->iUId;
        
         if ( aErrCode == KErrNone )
         {           
             CreateMultipleMaptiles( aMapTilePath );
-            lookupItem.iFilePath.Copy(aMapTilePath);
+            lookupItem.iFilePath = QString( (QChar*)aMapTilePath.Ptr(), aMapTilePath.Length());
             lookupItem.iFetchingStatus = EMapTileFectchingCompleted;
  
         }
-        else if ( aErrCode == KErrCouldNotConnect )
+        else 
 		{
 		    lookupItem.iFetchingStatus = EMapTileFetchingNetworkError;
             iMyLocationThreeAMTimer->StartTimer();
               
-		}
-		else
-		{
-		    lookupItem.iFetchingStatus = EMapTileFetchingUnknownError;
-		}
+		}	
 		
         TRAP_IGNORE( UpdateMaptileDatabaseL( iMapTileRequestQueue[0]->iEventType,lookupItem ) );
 
@@ -1592,7 +1774,7 @@
 // -----------------------------------------------------------------------------
 //
 void CMyLocationsEngine::UpdateMaptileDatabaseL(
-        TInt aEventType, TLookupItem& aLookupItem)
+        TInt aEventType, MaptileLookupItem& aLookupItem)
 {
     __TRACE_CALLSTACK;
     if (aEventType == EContactDbObserverEventContactChanged || aEventType
@@ -1600,17 +1782,17 @@
             aEventType == EChangeAdd )
     {
         
-        if (iMaptileDatabase->FindEntryL(aLookupItem))
+        if ( iMaptileDatabase->findEntry(aLookupItem) )
         {
-            iMaptileDatabase->UpdateEntryL(aLookupItem);
+            iMaptileDatabase->updateEntry(aLookupItem);
         }
         else
         {
-            iMaptileDatabase->CreateEntryL(aLookupItem);
+            iMaptileDatabase->createEntry(aLookupItem);
         }
     }
-    if (aLookupItem.iFetchingStatus == EMapTileFetchingUnknownError
-            || aLookupItem.iFetchingStatus == EMapTileFetchingNetworkError)
+    if ( aLookupItem.iFetchingStatus == EMapTileFetchingUnknownError
+            || aLookupItem.iFetchingStatus == EMapTileFetchingNetworkError )
     {
         TRAP_IGNORE( UpdateDatabaseL( NULL,
                         aLookupItem.iUid, aLookupItem.iSource, EEntryDeleted ) );
@@ -1624,11 +1806,13 @@
         buffer->Des().Copy(ptr);
         if(buffer)
         {
-            aLookupItem.iFilePath.Append(*buffer);
+            QString str = QString( (QChar*)buffer->Ptr(), buffer->Length());
+            aLookupItem.iFilePath.append( str );
         }
         CleanupStack::PopAndDestroy(buffer);
-        iMyLocationsDatabaseManager->UpdateMapTilePath(aLookupItem.iUid,
-                aLookupItem.iSource, aLookupItem.iFilePath);
+        TBuf<KBufSize> filePath( aLookupItem.iFilePath.utf16() );
+        iMyLocationsDatabaseManager->UpdateMapTilePath( aLookupItem.iUid,
+                aLookupItem.iSource, filePath );
     }
 }
 
@@ -1656,8 +1840,6 @@
             landmark = iMapTileInterface->GetLandMarkDetails();
             if (NULL != landmark)
             {
-                TRAP_IGNORE( landmark->SetPositionFieldL(EPositionFieldComment,
-                        iMapTileRequestQueue[0]->iAddressDetails->Des() ) );
                 TRAP_IGNORE( UpdateDatabaseL( landmark, iMapTileRequestQueue[0]->iUId,
                                 ESourceCalendar,
                                 MapChangeType( ESourceCalendar, iMapTileRequestQueue[0]->iEventType ) ) );
@@ -1747,15 +1929,17 @@
 // CMyLocationsEngine::ManipulateMapTileDataBaseL()
 // -----------------------------------------------------------------------------
 //
-void CMyLocationsEngine::ManipulateMapTileDataBaseL(TLookupItem& aLookupItem)
+void CMyLocationsEngine::ManipulateMapTileDataBaseL(MaptileLookupItem& aLookupItem)
 {
     __TRACE_CALLSTACK;
     TBool entryAvailable=EFalse;
-    entryAvailable = iMaptileDatabase->FindEntryL(aLookupItem);
-    iMaptileDatabase->DeleteEntryL(aLookupItem);
+    quint32 tempStatus = aLookupItem.iFetchingStatus;
+    entryAvailable = iMaptileDatabase->getEntry( aLookupItem );
+    iMaptileDatabase->deleteEntry(aLookupItem);
+    aLookupItem.iFetchingStatus = tempStatus;
     if (entryAvailable)
     {
-        iMaptileDatabase->DeleteMapTileL(aLookupItem);
+        iMaptileDatabase->deleteMapTile(aLookupItem);
     }            
 }
 
--- a/locationpickerservice/inc/locationpickersearchview.h	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationpickerservice/inc/locationpickersearchview.h	Mon Oct 04 00:10:56 2010 +0300
@@ -65,11 +65,15 @@
     void handleLongPress();
     //delete context menu
     void deleteMenu();
+    //handle secondary back action
+    void backTriggered();
 signals:
     //signals to switch current view
     void switchView();
     //signals when any item is selected
     void selectItem( quint32 aLm );
+    //signal to send service complete
+    void completeService();
 #ifdef LOCPICKER_UNIT_TEST
 public:
 #else    
@@ -94,6 +98,8 @@
     HbMenu* mLongPressMenu;
     //select action
     HbAction* mSelectAction;
+    //back action
+    HbAction *mBackAction;
 };
 
 
--- a/locationpickerservice/inc/locationpickertypes.h	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationpickerservice/inc/locationpickertypes.h	Mon Oct 04 00:10:56 2010 +0300
@@ -27,6 +27,9 @@
 // space
 const QString KSpace(" ");
 
+//colon
+const QString KTitleSeparator(":");
+
 //Icon Paths
 
 // dummy image for a LandMarks
--- a/locationpickerservice/locationpickerservice.pro	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationpickerservice/locationpickerservice.pro	Mon Oct 04 00:10:56 2010 +0300
@@ -26,7 +26,8 @@
     # Build.inf rules
     BLD_INF_RULES.prj_exports += \
          "$${LITERAL_HASH}include <platform_paths.hrh>" \
-         "rom/locationpickerservice.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(locationpickerservice.iby)"
+         "rom/locationpickerservice.iby  CORE_APP_LAYER_IBY_EXPORT_PATH(locationpickerservice.iby)" \
+         "rom/locationpickerservice_resources.iby  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(locationpickerservice_resources.iby)"
 
     TARGET.UID3 = 0x2002C3AA 
     isEmpty(TARGET.EPOCSTACKSIZE):TARGET.EPOCSTACKSIZE = 0x14000
@@ -87,3 +88,6 @@
     inc/locationpickerdocumentloader.h \
     inc/hgwidgetdatamodel.h
 
+
+
+symbian:MMP_RULES += SMPSAFE
--- a/locationpickerservice/resources/location.hgmediawall.widgetml	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationpickerservice/resources/location.hgmediawall.widgetml	Mon Oct 04 00:10:56 2010 +0300
@@ -2,27 +2,30 @@
   <layout name="layout-scrollbar" type="mesh">
     <meshitem src="content" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
     <meshitem src="content" srcEdge="TOP" dst="" dstEdge="TOP" />
-	<meshitem src="content" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+	  <meshitem src="content" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
     <meshitem src="content" srcEdge="LEFT" dst="" dstEdge="LEFT" />
     <meshitem src="scrollbar-horizontal" srcEdge="BOTTOM" dst="content" dstEdge="BOTTOM" />
-	<meshitem src="scrollbar-horizontal" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" />
+	  <meshitem src="scrollbar-horizontal" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" />
     <meshitem src="scrollbar-horizontal" srcEdge="LEFT" dst="content" dstEdge="LEFT" />
     <meshitem src="title" srcEdge="TOP" dst="content" dstEdge="TOP" />
-    <meshitem src="title" srcEdge="CENTERH" dst="content" dstEdge="CENTERH" />
-    <meshitem src="centeritem" srcEdge="BOTTOM" dst="scrollbar-horizontal" dstEdge="TOP" />
+    <meshitem src="title" srcEdge="LEFT" dst="content" dstEdge="LEFT" /> 
+    <meshitem src="title" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" />
+    <meshitem src="centeritem" srcEdge="BOTTOM" dst="content" dstEdge="BOTTOM" />
     <meshitem src="centeritem" srcEdge="TOP" dst="title" dstEdge="BOTTOM" />
-	<meshitem src="centeritem" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" />
+	  <meshitem src="centeritem" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" />
     <meshitem src="centeritem" srcEdge="LEFT" dst="content" dstEdge="LEFT" />
   </layout>
   <layout name="layout-noscrollbar" type="mesh">
     <meshitem src="content" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
     <meshitem src="content" srcEdge="TOP" dst="" dstEdge="TOP" />
-	<meshitem src="content" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+	  <meshitem src="content" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
     <meshitem src="content" srcEdge="LEFT" dst="" dstEdge="LEFT" />
     <meshitem src="description" srcEdge="BOTTOM" dst="content" dstEdge="BOTTOM" />
-    <meshitem src="description" srcEdge="CENTERH" dst="content" dstEdge="CENTERH" />
+    <meshitem src="description" srcEdge="LEFT" dst="content" dstEdge="LEFT" /> 
+    <meshitem src="description" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" /> 
     <meshitem src="title" srcEdge="TOP" dst="content" dstEdge="TOP" />
-    <meshitem src="title" srcEdge="CENTERH" dst="content" dstEdge="CENTERH" />
+    <meshitem src="title" srcEdge="LEFT" dst="content" dstEdge="LEFT" /> 
+    <meshitem src="title" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" />
     <meshitem src="centeritem" srcEdge="BOTTOM" dst="content" dstEdge="BOTTOM" />
     <meshitem src="centeritem" srcEdge="TOP" dst="title" dstEdge="BOTTOM" />
 	<meshitem src="centeritem" srcEdge="RIGHT" dst="content" dstEdge="RIGHT" />
--- a/locationpickerservice/rom/locationpickerservice.iby	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationpickerservice/rom/locationpickerservice.iby	Mon Oct 04 00:10:56 2010 +0300
@@ -22,7 +22,5 @@
 file=ABI_DIR/BUILD_DIR/locationpickerservice.exe                   PROGRAMS_DIR/locationpickerservice.exe
 data=ZPRIVATE/10003a3f/import/apps/locationpickerservice_reg.rsc		/private/10003a3f/import/apps/locationpickerservice_reg.rsc	
 data=DATAZ_/resource/apps/locationpickerservice.rsc		/resource/apps/locationpickerservice.rsc
-// Localizations
-data=DATAZ_\QT_TRANSLATIONS_DIR\lilpicker_en.qm     QT_TRANSLATIONS_DIR\lilpicker_en.qm
 
 #endif // __LOCATION_PICKER_SERVICE_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locationpickerservice/rom/locationpickerservice_resources.iby	Mon Oct 04 00:10:56 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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:  The locationpickerservice_resources iby file.
+*
+*/
+
+#include <data_caging_paths_for_iby.hrh> 
+
+#ifndef __LOCATION_PICKER_SERVICE_RESOURCES_IBY__
+#define __LOCATION_PICKER_SERVICE_RESOURCES_IBY__
+
+// ---- locationpickerservice_resources --------------------------------------------------------
+
+data=DATAZ_/resource/apps/locationpickerservice.rsc		/resource/apps/locationpickerservice.rsc
+// Localizations
+data=DATAZ_\QT_TRANSLATIONS_DIR\lilpicker.qm     QT_TRANSLATIONS_DIR\lilpicker.qm
+
+#endif // __LOCATION_PICKER_SERVICE_RESOURCES_IBY__
--- a/locationpickerservice/src/hgwidgetdatamodel.cpp	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationpickerservice/src/hgwidgetdatamodel.cpp	Mon Oct 04 00:10:56 2010 +0300
@@ -101,15 +101,21 @@
         case Qt::DisplayRole:
         {
             QStringList displayText;
-            QStringList adressDetail = mProxyModel->data(proxyModelIndex,Qt::DisplayRole).toStringList();
+            QStringList adressDetail = mProxyModel->data(proxyModelIndex,Qt::DisplayRole).
+            	toStringList();
             QString displayString;
             if(!adressDetail[0].isEmpty())
             {
-                displayString = adressDetail[0]+KSeparator+KSpace+adressDetail[1];
+                displayString = adressDetail[0]+KSpace+KTitleSeparator+KSpace+
+                adressDetail[1]+KSpace+KSeparator+adressDetail[2];
+            }
+            else if (!adressDetail[1].isEmpty())
+            {
+                displayString = adressDetail[1]+KSpace+KSeparator+adressDetail[2];
             }
             else
             {
-                displayString = adressDetail[1];
+                displayString = adressDetail[2];
             }
             QString text("");
             displayText <<displayString<<text;
@@ -135,9 +141,11 @@
                 painter.begin(&mapPixmap);
                 HbIcon adressTypeIcon(adressType);
                 //draw the adressType Icon over mapTile Icon
-                adressTypeIcon.paint(&painter,QRectF((mapPixmap.width()-adressTypeIcon.width()),0,adressTypeIcon.width(),adressTypeIcon.height()));
+                adressTypeIcon.paint(&painter,QRectF((mapPixmap.width()-adressTypeIcon.width()),
+                	0,adressTypeIcon.width(),adressTypeIcon.height()));
                 painter.fillRect(QRect(0,0,mapWidth,MAPSTROKE),brush);
-                painter.fillRect(QRect(0,mapHeight-MAPSTROKE,mapWidth,(mapHeight-MAPSTROKE)),brush);
+                painter.fillRect(QRect(0,mapHeight-MAPSTROKE,mapWidth,
+                	(mapHeight-MAPSTROKE)),brush);
                 painter.fillRect(QRect(0,0,MAPSTROKE,mapPixmap.height()),brush);
                 painter.fillRect(QRect((mapWidth-MAPSTROKE),0,mapWidth,mapHeight),brush);
                 painter.end();
--- a/locationpickerservice/src/locationpickerappwindow.cpp	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationpickerservice/src/locationpickerappwindow.cpp	Mon Oct 04 00:10:56 2010 +0300
@@ -66,7 +66,8 @@
     addView( mLocationPickerView );
     setCurrentView(mLocationPickerView);
     //connect to orientationChanged signal
-     connect(this, SIGNAL(orientationChanged(Qt::Orientation)),this, SLOT(changeOrientation(Qt::Orientation)));
+     connect(this, SIGNAL(orientationChanged(Qt::Orientation)),this, 
+     	SLOT(changeOrientation(Qt::Orientation)));
     connect(this, SIGNAL(aboutToChangeOrientation()),this, SLOT(closeDetailsDialog()));
      
     }
@@ -114,15 +115,20 @@
         mLocationPickerDocumentLoader->load(":/locationpickersearchview.docml", &ok);
         Q_ASSERT_X(ok, "locationpickerService", "invalid DocML file");
         //find the LocationPickerSearchView
-        QGraphicsWidget *locationPickerSearchWidget = mLocationPickerDocumentLoader->findWidget("LocationPickerSearchView");
+        QGraphicsWidget *locationPickerSearchWidget = 
+        	mLocationPickerDocumentLoader->findWidget("LocationPickerSearchView");
         Q_ASSERT_X((locationPickerSearchWidget != 0), "locationpickerService", "invalid DocML file");
         mLocationPickerSearchView = qobject_cast<LocationPickerSearchView*>(locationPickerSearchWidget);
         Q_ASSERT_X((mLocationPickerSearchView != 0), "mLocationPickerSearchView", 
             "qobject cast failure");
         //initialize the action items and connect to slots
         mLocationPickerSearchView->init(mLocationPickerContent->getStandardModel());
-        connect(mLocationPickerSearchView,SIGNAL(switchView()),this,SLOT(activateLocationPickerView()));
-        connect(mLocationPickerSearchView,SIGNAL(selectItem( quint32 )),this,SLOT(itemSelected( quint32 )));
+        connect(mLocationPickerSearchView,SIGNAL(switchView()),
+        	this,SLOT(activateLocationPickerView()));
+        connect(mLocationPickerSearchView,SIGNAL(selectItem( quint32 )),
+        	this,SLOT(itemSelected( quint32 )));
+        connect(mLocationPickerSearchView,SIGNAL(completeService()),
+        	this,SLOT(serviceComplete()));
         addView(mLocationPickerSearchView);
     }
     //set LocationPickerSearchview as current view
--- a/locationpickerservice/src/locationpickerdatamanager_p.cpp	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationpickerservice/src/locationpickerdatamanager_p.cpp	Mon Oct 04 00:10:56 2010 +0300
@@ -108,6 +108,7 @@
     }
     QString lmAddressLine1;
     QString lmAddressLine2;
+    QString lmAddressLine3;
     QString contextAddress;
     QString contextAddressCountry;
     
@@ -117,6 +118,7 @@
         contextAddressCountry.clear();
         lmAddressLine1.clear();
         lmAddressLine2.clear();
+        lmAddressLine3.clear();
     
         if( !aItemArray[i].mIsDuplicate )
         {
@@ -127,68 +129,68 @@
             {
                 if( lmAddressLine1.isEmpty() )
                 {
-                    lmAddressLine1 = aItemArray[i].mStreet;
+                    lmAddressLine2 = aItemArray[i].mStreet;
                 }
                 else
                 {
-                    lmAddressLine2 = aItemArray[i].mStreet;
+                    lmAddressLine3 = aItemArray[i].mStreet;
                     addressEmtpy = EFalse;
-            	  }
+            	}
             }
             if( !aItemArray[i].mCity.isEmpty() )
             {
-                if( lmAddressLine1.isEmpty() )
+                if( lmAddressLine2.isEmpty() )
                 {
-                    lmAddressLine1 = aItemArray[i].mCity;
+                    lmAddressLine2 = aItemArray[i].mCity;
                 }
                 else
                 {
                     if( !addressEmtpy )
                     {
-                        lmAddressLine2 = lmAddressLine2 + KSeparator;
-                        lmAddressLine2 = lmAddressLine2 + KSpace;
-                        lmAddressLine2 = lmAddressLine2 + aItemArray[i].mCity;
+                        lmAddressLine3 = lmAddressLine3 + KSeparator;
+                        lmAddressLine3 = lmAddressLine3 + KSpace;
+                        lmAddressLine3 = lmAddressLine3 + aItemArray[i].mCity;
                     }
                     else
                     {
-                        lmAddressLine2 = aItemArray[i].mCity;
+                        lmAddressLine3 = aItemArray[i].mCity;
                         addressEmtpy = EFalse;
                     }
                 }
             }
             if( !aItemArray[i].mState.isEmpty() )
             {
-                if( lmAddressLine1.isEmpty() )
+                if( lmAddressLine2.isEmpty() )
                 {
-                    lmAddressLine1 = aItemArray[i].mState;
+                    lmAddressLine2 = aItemArray[i].mState;
                 }
                 else
                 {
                     if( !addressEmtpy )
                     {
-                        lmAddressLine2 = lmAddressLine2 + KSeparator;
-                        lmAddressLine2 = lmAddressLine2 + KSpace;
-                        lmAddressLine2 = lmAddressLine2 + aItemArray[i].mState;
+                        lmAddressLine3 = lmAddressLine3 + KSeparator;
+                        lmAddressLine3 = lmAddressLine3 + KSpace;
+                        lmAddressLine3 = lmAddressLine3 + aItemArray[i].mState;
                     }
                     else
                     {
-                        lmAddressLine2 = aItemArray[i].mState;
+                        lmAddressLine3 = aItemArray[i].mState;
                         addressEmtpy = EFalse;
                     }
                 }
             }
-            contextAddress = lmAddressLine2;
+            contextAddress = lmAddressLine3;
             if( !aItemArray[i].mCountry.isEmpty() )
             {
                 if( !addressEmtpy )
                 {
-                    lmAddressLine2 = lmAddressLine2 + KSeparator;
-                    lmAddressLine2 = lmAddressLine2 + KSpace;
-                    lmAddressLine2 = lmAddressLine2 + aItemArray[i].mCountry;
+                    lmAddressLine3 = lmAddressLine3 + KSeparator;
+                    lmAddressLine3 = lmAddressLine3 + KSpace;
+                    lmAddressLine3 = lmAddressLine3 + aItemArray[i].mCountry;
                 }
                 else
                 {
-                    lmAddressLine2 = aItemArray[i].mCountry;
+                    lmAddressLine3 = aItemArray[i].mCountry;
                     addressEmtpy = EFalse;
                 }
                 contextAddressCountry = aItemArray[i].mCountry;
@@ -249,7 +251,7 @@
             QStringList contextList;
             contextList<<lmAddressLine1<<contextAddress<<contextAddressCountry;
             QStandardItem *modelItem = new QStandardItem();
-            addressData << lmAddressLine1 << lmAddressLine2;
+            addressData << lmAddressLine1 << lmAddressLine2<<lmAddressLine3;
             modelItem->setData(QVariant(addressData), Qt::DisplayRole);
             modelItem->setData( icons, Qt::DecorationRole );
             modelItem->setData( aItemArray[i].mId, Qt::UserRole );
@@ -273,7 +275,9 @@
     // add contact collection
     QStandardItem *modelItemContact = new QStandardItem();
     int conNum = aCount.value(0);
-    QString contactCollectionNum(hbTrId("txt_lint_list_ln_items",conNum));
+    QString contactCollectionNum;
+    contactCollectionNum.setNum(conNum);
+    contactCollectionNum.append(" items");
     QString contactCollectionName( hbTrId("txt_lint_list_contact_addresses") );
  
 
@@ -286,7 +290,9 @@
    
     //txt_lint_list_calender_addresses
     int calNum = aCount.value(1);
-    QString calendarCollectionNum(hbTrId("txt_lint_list_ln_items",calNum));
+    QString calendarCollectionNum;
+    calendarCollectionNum.setNum(calNum);
+    calendarCollectionNum.append(" items");
     QString calendarCollectionName( hbTrId("txt_lint_list_calendar_locations") );
     QStringList calender = (QStringList()<<calendarCollectionName<<calendarCollectionNum);
     
@@ -298,7 +304,9 @@
      
     //txt_lint_list_places_addresses
     int placNum = aCount.value(2);
-    QString placesCollectionNum(hbTrId("txt_lint_list_ln_items",placNum));
+    QString placesCollectionNum;
+    placesCollectionNum.setNum(placNum);
+    placesCollectionNum.append(" items");
     QString placesCollectionName( hbTrId("txt_lint_list_places") );
     QStringList places = (QStringList()<<placesCollectionName<<placesCollectionNum);
 
--- a/locationpickerservice/src/locationpickersearchview.cpp	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationpickerservice/src/locationpickersearchview.cpp	Mon Oct 04 00:10:56 2010 +0300
@@ -43,8 +43,16 @@
     mVerticalLayout(NULL),
     mDocumentLoader(aLoader),
 	mLongPressMenu(NULL),
-	mSelectAction(NULL)
+	mSelectAction(NULL),
+	mBackAction(NULL)
 {
+    
+    // create back action
+    mBackAction = new HbAction(Hb::BackNaviAction);
+    // add back key action
+    setNavigationAction(mBackAction);
+    //connect to slots
+    connect(mBackAction, SIGNAL(triggered()), this,SLOT(backTriggered())); 
 
 }
 // ----------------------------------------------------
@@ -54,6 +62,7 @@
 {
     delete mProxyModel;
     delete mEmptyLabel;
+    delete mBackAction;
 }
 
 // ----------------------------------------------------
@@ -179,7 +188,7 @@
 {
     mLongPressMenu = new HbMenu();
     mLongPressMenu->setTimeout(HbMenu::NoTimeout);
-    mSelectAction  = mLongPressMenu->addAction(hbTrId("txt_lint_list_select"));
+    mSelectAction  = mLongPressMenu->addAction(hbTrId("txt_lint_menu_select"));
     mIndex = aItem->modelIndex();
     connect(mSelectAction, SIGNAL(triggered()),this, SLOT(handleLongPress()));
     mLongPressMenu->setPreferredPos(aPoint);
@@ -205,3 +214,15 @@
     mSelectAction->deleteLater();
     mSelectAction = NULL;
 }
+
+// ----------------------------------------------------------------------------
+// LocationPickerSearchView::backButtonTriggered()
+// ----------------------------------------------------------------------------
+void LocationPickerSearchView::backTriggered()
+{
+    
+   //complete the service
+    emit completeService();
+    
+    
+}
--- a/locationpickerservice/src/locationpickerview.cpp	Thu Sep 02 20:20:42 2010 +0300
+++ b/locationpickerservice/src/locationpickerview.cpp	Mon Oct 04 00:10:56 2010 +0300
@@ -76,7 +76,8 @@
             QString("ascendingAction")));
     mDescendingAction = qobject_cast<HbAction*> (mDocumentLoader->findObject(
             QString("descendingAction")));
-    if( !mAllAction || !mCollectionAction || !mSearchAction || !mAscendingAction || !mDescendingAction )
+    if( !mAllAction || !mCollectionAction || !mSearchAction ||
+    	 !mAscendingAction || !mDescendingAction )
     {
         qFatal("Error Reading Docml");
     }
@@ -176,7 +177,8 @@
     connect(mSearchAction, SIGNAL(triggered()), this,
             SLOT(searchTabTriggered()));
     // connect the signal of the list activated to a slot.
-    connect(mListView, SIGNAL(activated(const QModelIndex &)), this, SLOT(handleActivated(const QModelIndex &)));
+    connect(mListView, SIGNAL(activated(const QModelIndex &)), 
+    this, SLOT(handleActivated(const QModelIndex &)));
     connect(mListView,SIGNAL(longPressed(HbAbstractViewItem*, const QPointF &)),this,
             SLOT(launchPopUpMenu(HbAbstractViewItem*, const QPointF &)));
     //set widget according to orientation
@@ -216,7 +218,8 @@
             SLOT(orientationChanged(Qt::Orientation)));
 
     mWidget->setAcceptTouchEvents(true);
-    connect(mWidget, SIGNAL(activated(const QModelIndex &)),this, SLOT(handleActivated(const QModelIndex &)));
+    connect(mWidget, SIGNAL(activated(const QModelIndex &)),
+    this, SLOT(handleActivated(const QModelIndex &)));
     connect(mWidget, SIGNAL(longPressed(const QModelIndex &, const QPointF &)),this, 
             SLOT(launchPopUpMenu(const QModelIndex &, const QPointF &)));
     mWidget->setLongPressEnabled(true);
@@ -284,7 +287,8 @@
         break;
         case ELocationPickerCollectionListContent:
         {
-            mListView->setModel(mLocationPickerCollectionListContent->getStandardModel(),mListItem);
+            mListView->setModel(mLocationPickerCollectionListContent->getStandardModel()
+            ,mListItem);
             mCollectionAction->setChecked(true);
             mAllAction->setChecked(false);
             if(mAscendingAction->isEnabled())
@@ -502,6 +506,11 @@
 // -----------------------------------------------------------------------------
 void LocationPickerView::searchTabTriggered()
 {
+    if (mCollectionContent)
+    {
+        delete mCollectionContent;
+        mCollectionContent = NULL;
+    }
     mWidget->hide();
     emit switchToSearchView();
 }
@@ -611,7 +620,7 @@
     mLongPressMenu = new HbMenu();
     mLongPressMenu->setTimeout(HbMenu::NoTimeout);
     connect(mLongPressMenu,SIGNAL(aboutToClose ()),this,SLOT(deleteMenu()));
-    mSelectAction  = mLongPressMenu->addAction(hbTrId("txt_lint_list_select"));
+    mSelectAction  = mLongPressMenu->addAction(hbTrId("txt_lint_menu_select"));
     if( mViewType == ELocationPickerCollectionContent || mViewType == ELocationPickerContent )
     {
         mDetailsAction  = mLongPressMenu->addAction(hbTrId("txt_lint_menu_details"));
@@ -631,7 +640,7 @@
     mLongPressMenu = new HbMenu();
     mLongPressMenu->setTimeout(HbMenu::NoTimeout);
     connect(mLongPressMenu,SIGNAL(aboutToClose ()),this,SLOT(deleteMenu()));
-    mSelectAction  = mLongPressMenu->addAction(hbTrId("txt_lint_list_select"));
+    mSelectAction  = mLongPressMenu->addAction(hbTrId("txt_lint_menu_select"));
     mIndex = aIndex;
     connect(mSelectAction, SIGNAL(triggered()), this, SLOT(handleSelect()));
     mLongPressMenu->setPreferredPos(aPoint);
@@ -693,8 +702,10 @@
     }
     else
     {
-        adressDetail = mCollectionContent->getProxyModel()->data(mIndex,Qt::UserRole+3).toStringList();
-        iconName =  mCollectionContent->getProxyModel()->data(mIndex,Qt::UserRole+1).toString();
+        adressDetail = mCollectionContent->getProxyModel()->data(mIndex,Qt::UserRole+3).
+        	toStringList();
+        iconName =  mCollectionContent->getProxyModel()->data(mIndex,Qt::UserRole+1).
+        	toString();
     }
     if(iconName.isEmpty())
     {
@@ -757,7 +768,8 @@
         mEmptyLabel->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
         mEmptyLabel->setFontSpec(HbFontSpec(HbFontSpec::Primary));
         mEmptyLabel->setAlignment(Qt::AlignCenter);
-        mLinerLayout->removeItem(mListView);
+        mListView->reset();
+        mLinerLayout->removeItem(mListView);        
         mListView->hide();
         mWidget->setVisible(false);
         mLinerLayout->insertItem(0, mEmptyLabel);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package_definition.xml	Mon Oct 04 00:10:56 2010 +0300
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<SystemDefinition schema="3.0.0" xmlns:qt="http://www.nokia.com/qt">
+ <package id="location" name="Location Apps" levels="ui events loc api">
+  <collection id="location_plat" name="Location Apps Platform Interfaces" level="api">
+   <component id="location_picker_service_api" name="Location Picker Service API" introduced="^4" class="api" filter="s60">
+    <unit bldFile="location_plat/location_picker_service_api"/>
+   </component>
+   <component id="location_data_harvester_api" name="Location Data Harvester API" introduced="^4" class="api" filter="s60">
+    <unit bldFile="location_plat/location_data_harvester_api"/>
+   </component>
+  </collection>
+  <collection id="locationpickerservice" name="Location Picker Service" level="loc">
+	<!--collection is really a component. Should move down a directory -->
+   <component id="locationpickerservice_build" filter="s60" name="Location Picker Service Build" introduced="^4">
+    <unit bldFile="locationpickerservice" qt:proFile="locationpickerservice.pro"/>
+   </component>
+  </collection>
+  <collection id="locationdataharvester" name="Location Data Harvester" level="events">
+	<!--collection is really a component. Should move down a directory -->
+     <component id="locationdataharvester_build" name="Location Data Harvester Build" filter="s60" introduced="^4">
+      <unit bldFile="locationdataharvester" qt:proFile="locationdataharvester.pro"/>
+     </component>
+  </collection>
+ </package>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package_map.xml	Mon Oct 04 00:10:56 2010 +0300
@@ -0,0 +1,1 @@
+<PackageMap root="sf" layer="app"/>