diff -r a36b1e19a461 -r 989d2f495d90 serviceproviders/sapi_landmarks/tsrc/dev/tlandmarkstest/tlmlandmarktests/inc/landmarkservice.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/serviceproviders/sapi_landmarks/tsrc/dev/tlandmarkstest/tlmlandmarktests/inc/landmarkservice.h Fri Jul 03 15:51:24 2009 +0100 @@ -0,0 +1,376 @@ +/* +* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: CLandmarkService class + * +*/ + + + +#ifndef __CLANDMARKSERVICE_H__ +#define __CLANDMARKSERVICE_H__ + +#ifdef _DEBUG +#include +#endif + +// INCLUDES +#include +#include +#include + +//FORWARD DECLARARTIONS +class CLandmarkManageHandlers; +class MLandmarkObserver; +class CLandmarkFilter; +class CPosLandmarkParser; +class CPosLandmarkEncoder; +class CPosLmItemIterator; +class CPosLmDatabaseManager; +class CPosLandmark; +class CPosLandmarkCategory; +class TPosLmDatabaseSettings; +class CLandmarkManageObjects; + +/** + * CLandmarkService + * This class has the core implementation. The member functions of this class + * call the native landmarks api's to perform the necessary operations. This class + * also owns the garbage collector which takes care of active objects associated + * with async requests. It also owns the CLandmarkManageHandlers object that manages + * the handles to open databases. The interface class calls the appropriate member + * functions of this class to perform the required operation. + */ +// CLASS DECLARATION +NONSHARABLE_CLASS(CLandmarkService): public CBase + { +public: + /** + * TPosItem + * Specifies whether the id passed is a landmark id or a category id. + */ + enum TPosItem + { + ECategory = 0 /**< + Item is a landmark category id. */, + ELandmark /**< + Item is a landmark id. */, + }; + /** + * TDatabaseType + * Specifies whether the database is local or remote. + */ + enum TDatabaseType + { + ELocalDatabase = 0 /**< + database is a local. */, + ERemoteDatabase /**< + database is remote. */, + }; + +public: // New methods + + /** + * NewL. + * Two-phased constructor. + * Create a CLandmarkService object. + * @return A pointer to the created instance of CLandmarkService. + */ + IMPORT_C static CLandmarkService* NewL(); + + /** + * NewLC. + * Two-phased constructor. + * Create a CLandmarkService object. + * @return A pointer to the created instance of CLandmarkService. + */ + IMPORT_C static CLandmarkService* NewLC(); + + /** + * ~CLandmarkService + * Destructor. + */ + ~CLandmarkService(); + +public: // Functions to retrieve data members + + /** + * ImportL. + * Imports landmarks to the requested database. + * @param aIterator A pointer reference to the list of imported landmarks. User + * owns the iterator. + * @param aLandmarkParser The instance of CPosLandmarkParser that + * will parse the input landmark file. + * @param aDatabaseUri The URI of the database to which the parsed landmarks + * will be imported. + */ + IMPORT_C void ImportL( CPosLmItemIterator*& aIterator, + CPosLandmarkParser& aLandmarkParser, + const TDesC& aDatabaseUri = KNullDesC ); + + /** + * ExportL. + * Export a set of landmarks from the requested database to a file. + * @param aLandmarkEncoder A pointer to a landmark encoder object. + * @param aLandmarkIdArray The array of landmark ids which should be exported. + * @param aDatabaseUri The URI of the database from which the landmarks will + * be exported. + */ + IMPORT_C void ExportL( CPosLandmarkEncoder& aLandmarkEncoder, + const RArray& aLandmarkIdArray, + const TDesC& aDatabaseUri = KNullDesC ) const; + + /** + * GetListL. + * Gets a list of landmarks/landmark categories from the requested database synchronously. + * @param aIterator A pointer reference to the list of retrieved landmarks/landmark + * categories. User owns the iterator. + * @param aFilter The filter to be used for searching landmarks/landmark categories + * in database. + * @param aDatabaseUri The URI of the database from which landmarks/lanmdark categories + * should be fetched. + */ + IMPORT_C void GetListL ( CPosLmItemIterator*& aIterator, + CLandmarkFilter& aFilter, const TDesC& aDatabaseUri = KNullDesC ) const; + + /** + * GetListL. + * Gets a list of landmark databases. + * @param aDatabaseList A pointer reference to the list of retrieved databases. + * User owns allocated list. + * @param aProtocol Protocol which matches that of the databases to be retrieved. + */ + IMPORT_C void GetListL( CDesCArray*& aDatabaseList, + const TDesC& aProtocol = KNullDesC ) const; + + /** + * GetListL. + * Gets a list of landmarks/landmark categories from the requested database asynchronously. + * @param aTransactionId The transaction id assigned to this asynchronous request. + * @param aFilter The filter to be used for searching landmarks/landmark categories + * in database. + * @param aDatabaseUri The URI of the database from which landmarks/lanmdark categories + * should be fetched. + */ + IMPORT_C void GetListL( TInt32 aTransactionId, + CLandmarkFilter& aFilter, const TDesC& aDatabaseUri = KNullDesC ); + + /** + * AddItemL. + * Adds a new Landmark to the given database. + * @param aLandmark CPosLandmark instance to be added to database. + * @param aDatabaseUri The URI of the database to which the CPosLandmark + * instance should be added. + */ + IMPORT_C TPosLmItemId AddItemL( CPosLandmark& aLandmark, + const TDesC& aDatabaseUri = KNullDesC ); + + /** + * AddItemL. + * Adds a new Landmark category to the given database. + * @param aCategory CPosLandmarkCategory instance to be added to database. + * @param aDatabaseUri The URI of the database to which CPosLandmarkCategory + * instance should be added. + */ + IMPORT_C TPosLmItemId AddItemL( CPosLandmarkCategory& aCategory, + const TDesC& aDatabaseUri = KNullDesC ); + + /** + * AddItemL. + * Adds a new database to terminal. + * @param aDatabaseUri The URI of the database to be added to terminal. + */ + IMPORT_C void AddItemL( const TDesC& aDatabaseUri ); + + /** + * UpdateItemL. + * Updates an existing Landmark in the given database. + * @param aLandmark CPosLandmark instance to be updated in database. + * @param aDatabaseUri The URI of the database in which CPosLandmark + * instance should be updated. + */ + IMPORT_C void UpdateItemL( const CPosLandmark& aLandmark, + const TDesC& aDatabaseUri = KNullDesC ); + + /** + * UpdateItemL. + * Updates an existing Landmark category in the given database. + * @param aCategory CPosLandmarkCategory instance to be updated in database. + * @param aDatabaseUri The URI of the database to which CPosLandmarkCategory + * instance should be updated. + */ + IMPORT_C void UpdateItemL( const CPosLandmarkCategory& aCategory, + const TDesC& aDatabaseUri = KNullDesC ); + + /** + * UpdateItemL. + * Updates existing Database Information. + * @param aSettings TPosLmDatabaseSettings information to be updated. + * @param aDatabaseUri The URI of the database to be updated. + */ + IMPORT_C void UpdateItemL( TPosLmDatabaseSettings aSettings, + const TDesC& aDatabaseUri = KNullDesC ); + + /** + * LandmarkLC. + * Retrieves a Landmark from the database. + * @param aLandmarkId Id of the landmark to be retrieved. + * @param aDatabaseUri The URI of the database from which the CPosLandmark + * instance should be retrieved. + * @return A pointer to CPosLandmark instance. + */ + IMPORT_C CPosLandmark* LandmarkLC( const TPosLmItemId& aLandmarkId, + const TDesC& aDatabaseUri = KNullDesC ) const; + + /** + * CategoryLC. + * Retrieves a Landmark category from the database. + * @param aCategoryId Id of the landmark category to be retrieved. + * @param aDatabaseUri The URI of the database from which the CPosLandmarkCategory + * instance should be retrieved. + * @return A pointer to CPosLandmarkCategory instance. + */ + IMPORT_C CPosLandmarkCategory* CategoryLC( const TPosLmItemId& aCategoryId, + const TDesC& aDatabaseUri = KNullDesC ) const; + + /** + * RemoveItemL. + * Removes a Landmark/Landmark category from given database. + * @param aItemId The id of the Landmark/Landmark category to be removed. + * @param aItemIsLandmark Whether id passed is a landmark id or a category id. + * @param aDatabaseUri The URI of the database from which the + * Landmark/Landmark category is to be removed. + */ + IMPORT_C void RemoveItemL( TPosLmItemId aItemId, TPosItem aItemIsLandmark, + const TDesC& aDatabaseUri = KNullDesC ); + + /** + * RemoveItemL. + * Removes the given database. + * @param aDatabaseUri The URI of the database to be removed from terminal. + */ + IMPORT_C void RemoveItemL( const TDesC& aDatabaseUri ); + + /** + * SetActiveL. + * Sets specified database as an active database. + * @param aDatabaseUri The URI of the database to be set as an active database. + */ + IMPORT_C void SetActiveL( const TDesC& aDatabaseUri ); + + /** + * LinkCategoryToLandmarksL. + * Associates a category with a set of landmarks. + * @param aCategoryId The id of category. + * @param aLandmarkIdArray The array of landmark ids to which the + * category is to be associated. + * @param aDatabaseUri The URI of the database in which the landmarks and category exist. + */ + IMPORT_C void LinkCategoryToLandmarksL( TPosLmItemId aCategoryId, + RArray< TPosLmItemId >& aLandmarkIdArray, + const TDesC& aDatabaseUri = KNullDesC ); + + /** + * UnlinkCategoryToLandmarksL. + * Dissociates a category with a set of landmarks. + * @param aCategoryId The id of category. + * @param aLandmarkIdArray The array of landmark ids to which the + * category is to be dissociated. + * @param aDatabaseUri The URI of the database in which the landmarks and category exist. + */ + IMPORT_C void UnlinkCategoryToLandmarksL( TPosLmItemId aCategoryId, + RArray< TPosLmItemId >& aLandmarkIdArray, + const TDesC& aDatabaseUri = KNullDesC ); + + /** + * RegisterObserver. + * Registers an observer for Asynchronous call backs. + * @param aObserver A pointer to a concrete MLandmarkObserver instance. + */ + IMPORT_C void RegisterObserver( MLandmarkObserver* aObserver ); + + /** + * Cancel. + * Cancels an ongoing asynchronous request. + * @param aTransactionId The transaction id of the asynchronous request. + */ + IMPORT_C void Cancel( TInt32 aTransactionId ) const; + + /** + * GetDefaultDbUri. + * Gets the URI of the default database. + * @param aDefaultDbUri A reference to the URI of the default database. + */ + IMPORT_C void GetDefaultDbUriL( TPtrC& aDefaultDbUri ) const; + +private:// helper functions + + /** + * GetDbTypeFromUri. + * Gets the type of database. + * @param aDatabaseUri The URI of the database whose information is queried. + * @return Error. + */ + TDatabaseType GetDbTypeFromUri ( const TDesC& aDbUri ) const; + +private: // Constructors + + /** + * ConstructL + * 2nd phase constructor. + * Perform the second phase construction of a + * CLandmarkService object. + */ + void ConstructL(); + + /** + * CLandmarkService. + * C++ default constructor. + */ + CLandmarkService(); + +private: // Data members + + /** + * iManageHandler + * CPosLmManageHandler instance. + */ + CLandmarkManageHandlers* iManageHandler; + + /** + * iDatabaseManager + * CPosLmDatabaseManager instance. + */ + CPosLmDatabaseManager* iDatabaseManager; + + /** + * iObserver + * MLandmarkObserver instance. + */ + MLandmarkObserver* iObserver; + + /** + * iManageObjects + * CLandmarkManageObjects instance. + */ + CLandmarkManageObjects* iManageObjects; + +#ifdef _DEBUG + RFileLogger iLog; +#endif + }; + +#endif // __CLANDMARKSERVICE_H__ + +// End of File +