--- a/locationdataharvester/mylocationsengine/inc/mylocationsengine.h Tue Aug 31 15:09:25 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,412 +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: Mylocation engine header implementation.
-*
-*/
-
-
-#ifndef __MYLOCATIONSENGINE_H__
-#define __MYLOCATIONSENGINE_H__
-
-// INCLUDES
-// calendar related headers
-#include <calsession.h>
-#include <calentryview.h>
-
-// Header for contact DB
-#include <cntdb.h>
-
-//Qt contacts mobility apis
-#include <qtcontacts.h>
-#include <qcontactmanager.h>
-
-// Header for landmarks db
-#include<EPos_CPosLandmarkDatabase.h>
-
-// mylocations database manager
-#include "maptileinterface.h"
-#include "mylocationsdatabasemanager.h"
-#include "lookupmaptiledb.h"
-#include "calendernotification.h"
-#include "mylocationgeotagtimerao.h"
-class GeocodeUpdate;
-class CContactSubscriber;
-class CCalendarSubscriber;
-using namespace QTM_NAMESPACE;
-
-/**
- * This class contains the required data for maptile image processing.
- * Each address added/modified in contact database will be added as queue
- * using this class for maptile processing.
- */
-class CMapTileRequest: public CBase
-{
-public:
- //Consturctor
- CMapTileRequest():iLandmarkInfo(NULL),iAddressDetails(NULL){};
- //Destrucotr
- ~CMapTileRequest(){delete iLandmarkInfo;delete iAddressDetails;};
-public:
- //Landmark contains address details
- CPosLandmark* iLandmarkInfo;
- //single row address.
- HBufC* iAddressDetails;
- //entry id
- TInt32 iUId;
- //Address type
- TInt32 iAddressType;
- //Image path
- TFileName iImagePath;
- //Event type
- TInt iEventType;
-};
-
-/**
- * This class stores the information required for maptile
- * processing when it is triggered from the application(contact)
- * viewer.
- */
-class TAppAddressInfo
-{
-public:
- TInt iUid;
- TInt iAddressType;
-};
-
-// CLASS DECLARATION
-/** Class used to listen on various database change events from applications like calendar,
- * contacts, landmarks
- *
- * This class listens on database change events from applications like contacts, calendar, landmarks
- * and triggers updating the Mylocations database accordingly.
- * This process starts on phone bootup and always runs in the background.
- */
-class CMyLocationsEngine : public CActive, public MCalChangeCallBack2,
- public MContactDbObserver, public MMapTileObserver,public MNotifyChange,
- public MyLocationTimerObserver
-
-{
-
-public:
-
- /**
- * Contact address types
- */
- enum TContactAddressType
- {
- /** Address Type Pref */
- EAddressPref,
- /** Address type Work */
- EAddressWork,
- /** Address type Home */
- EAddressHome,
- };
-
-public:
-
- /**
- * CMyLocationsEngine::NewL()
- */
- static CMyLocationsEngine* CMyLocationsEngine::NewL();
-
- /**
- * ~CMyLocationsEngine.
- * Virtual Destructor.
- */
- virtual ~CMyLocationsEngine();
-
- /** Starts calender change notification method to get callbacks when entries are added/modified/deleted in calender
- *
- */
- void StartCalenderChangeNotifierL();
-
- /** Starts contacts change notification method to get callbacks when entries are added/modified/deleted in contacts
- *
- */
- void StartContactsChangeNotifierL();
-
- /** Starts landmarks change notification method to get callbacks when entries are added/modified/deleted in landmarks
- *
- */
- void StartLandmarksChangeNotifier();
-
-
-
- /** Maps the source type change type to Mylocations entry change type
- * @param[in] aSrcType Source type of the change
- * @param[in] aChangeType Type of change ( added/modified/deleted ).
- * @return The mylocations entry change type value.
- */
- TEntryChangeType MapChangeType( TUidSourceType aSrcType, TUint32 aChangeType );
-
-#ifdef MYLOCATIONENGINE_UNIT_TEST
-public:
-#else
-private:
-#endif
-
- /**
- * ConstructL.
- * 2nd phase constructor.
- */
- void ConstructL();
-
- /**
- * CMyLocationsEngine.
- * C++ default constructor.
- */
- CMyLocationsEngine();
-
- /** Creates a landmark object from contact item's location details and checks whether address available.
- * @param[in] aContactAddress A contact address whose location details needs to be used to create landmark object.
- * @returns A valid landmark object if location in the contact item is validated, NULL otherwise.
- */
- CPosLandmark* GetContactAddressDetailsLC( QContactAddress& aContactAddress );
-
- /**
- * A call back function for calendar change notification
- * @param aChangeItems List of changes since the last notification.
- */
- virtual void CalChangeNotification( RArray<TCalChangeEntry>& aChangeItems );
-
- /** Tests the contact database observer event type and handles it. The ID of a
- * contact affected by the change event, if relevant, can be retrieved via TContactDbObserverEvent::iContactId.
- * @param aEvent Provides information about the change event.
- */
- virtual void HandleDatabaseEventL( TContactDbObserverEvent aEvent );
-
- /**
- * Triggers the maptile processing for complete address
- * @param aEvent Provides information about the change event.
- */
- void TriggerMaptileRequestL( TContactDbObserverEvent& aEvent );
-
- /**
- * Process the maptile database event and updates the maptile database
- * @param aEventType Provides information about the type of request address.
- * @param aLookupItem Provides information about single address of contact.
- */
- void UpdateMaptileDatabaseL(TInt aEventType ,
- TLookupItem& aLookupItem );
-
- /**
- * Handles active object's request completion event.
- */
- void RunL();
-
- /**
- * Implements cancellation of an outstanding request.
- */
- void DoCancel();
-
-
- /**
- * Requests for map tile image , structure serch.
- * @param aLandmark Provides information about the address.
- * @param aAddressType Provides information about address type .
- * @param aUId, uid of the event.
- */
- void RequestMapTileImageL( CPosLandmark& aLandmark, const TUidSourceType aAddressType,
- const TInt32 aUId, const TInt aEventType );
-
- /**
- * Requests for map tile image , one box serch.
- * @param aAddressDetails Provides information about the address.
- * @param aAddressType Provides information about address type .
- * @param aUId, uid of the event.
- */
- void RequestMapTileImageL(const TDesC& aAddressDetails,
- const TUidSourceType aAddressType, const TInt32 aUId,const TInt aEventType);
-
- /**
- * Checks whether contact has a valid geocoordinates.
- * @param aContact Provides all the required information about the contact.
- * @param aAddressType Provides information about address type .
- * @param aLatitude, Latitude information.
- * @param aLongitude, Longitude information.
- * @return If geocoordinate available returns TRUE otherwise FALSE
- */
- TBool IsGeoCoordinateAvailable( QContact& aContact,
- QString aAddressType, double& aLatitude , double& aLongitude );
-
- /**
- * Add to maptile request queue.
- * @param mapTileRequest, request queue.
- * @return If successful, retrun KErrNone, or return some systemwide error.
- */
- TInt RequestExecute( CMapTileRequest* aMapTileRequest);
- /**
- * SetFolderPath.
- * Sets the maptile storing path.
- */
- void SetFolderPathL();
-
- /**
- * Refreshes calendar entries in mylocation databases. This is typically called when there is an undefined
- * change in calendar db.
- */
- void RefreshCalendarEntryListL();
-
- /**
- * Returns True if a calendar entry is available for a given id.
- */
- TBool IsCalendarEntryValidL( TUint32 aId );
-
- /**
- * Calender entry added.
- */
- void CalenderEntryAddedL(TCalChangeEntry aCalChangeEntry);
-
- /**
- * Calender entry modifyied.
- */
- void CalenderEntryModifyL(TCalChangeEntry aCalChangeEntry);
- /**
- * Update the mylocations database.
- */
- void UpdateDatabaseL( CPosLandmark* aLandmark, const TUint32 aUid,
- const TUint32 aSourceType, const TEntryChangeType aChangeType );
-
- /**
- * Informs the geocode completion
- */
- void UpdateGeoCodeToAppDataBase( TReal latitude,TReal longitude );
-
- /**
- * Process the pending maptile requests
- */
- void ProcessNextMaptileRequest();
-
- /**
- * maptile database manipulation.
- */
- void ManipulateMapTileDataBaseL(TLookupItem& aLookupItem);
-
- /**
- * Crop and create multiple maptile images for different applications requirements.
- */
- void CreateMultipleMaptiles( const TDesC& aMaptilePath );
-
- /**
- * Crop the maptile image and save the different files.
- */
- void CropAndSaveImage( QString filePath, int width,
- int height, QString appType, QString orientationType );
-
- /**Get the contact name for this perticular id.
- */
- void GetContactName( TInt32 iUId , TDes& aName );
-
-public: //From MMapTileObserver
-
- /**
- * Informs the maptile fetching completion
- */
- void MapTilefetchingCompleted( TInt aErrCode,const TDesC& aMapTilePath );
-
- /**
- * Informs the geo codes fetching completion
- */
- void GeoCodefetchingCompleted( TInt aErrCode, const TReal& aLatitude,
- const TReal& aLongitude, const TDesC& aMapTilePath );
-public://from MNotifychange
- void NotifyChangeL(TInt &aStatus);
- void GetChangeNotificationL(TInt &aId, TInt &addressType, TInt &addressCount );
- void SubscribeFromCalendarL(TInt aId);
-
-public: //from MyLocationTimerObserver
- /**
- * Notifies the timer expiry when 3AM timer was started to notify.
- */
- void MyLocationThreeAMTimerExpiredL();
-
-
-#ifdef MYLOCATIONENGINE_UNIT_TEST
-public:
-#else
-private:
-#endif
-
- // Data member
-
- //handle to timer class
- //calendar session handle
- CCalSession *iCalSession;
-
- // calendar view
- CCalEntryView *iCalView;
-
- // Handle to the contacts database
- CContactDatabase* iContactsDb;
-
- // Receives events reporting changes to a contact database.
- CContactChangeNotifier *iContactChangeNotifier;
-
- // Handle to landmarks db
- CPosLandmarkDatabase* iLandmarkDb;
-
- // landmark change event type.
- TPosLmEvent iLmEvent;
-
- //Handle to maptile interface
- CMapTileInterface* iMapTileInterface;
-
- CMyLocationsDatabaseManager* iMyLocationsDatabaseManager;
-
- //maptiledb
- CLookupMapTileDatabase* iMaptileDatabase;
-
- //Current event type
- TInt iEventType;
-
- //Maptile image request queue
- RArray<CMapTileRequest*> iMapTileRequestQueue;
-
- // 3am Timer
- CLocationGeoTagTimerAO *iMyLocationThreeAMTimer;
-
- //Flag to check maptilegeocoder plugin availability
- TBool iMaptileGeocoderPluginAvailable;
-
- //Maptile image path
- TFileName imageFilePath;
-
- //Object to listen calender db create notification.
- CCalenderNotification *iCalenderNotification;
-
- //Contact manager instance for retrieving contact info.
- QContactManager* iContactManager;
-
- //Subscribe from contact
- CContactSubscriber *iContactSubscriber;
-
- //Subscribe from calendar
- CCalendarSubscriber *iCalendarSubscriber;
-
- //Geo-code class instance
- GeocodeUpdate *iGeocodeUpdate;
-
- //Last viewed contact id
- TInt iLastContactId;
-
- //Last viewed calendar id
- TInt iLastCalendarId;
-
- //Address information for viewver maptile processing.
- RArray<TAppAddressInfo*> iAddressInfo;
-
-};
-
-#endif // __MYLOCATIONSENGINE_H__
-// End of File