diff -r 1fc85118c3ae -r 870918037e16 locationdataharvester/mylocationsengine/inc/mylocationsengine.h --- 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 -#include - -// Header for contact DB -#include - -//Qt contacts mobility apis -#include -#include - -// Header for landmarks db -#include - -// 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& 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 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 iAddressInfo; - -}; - -#endif // __MYLOCATIONSENGINE_H__ -// End of File