williamr@4: /* williamr@4: * Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@4: * williamr@4: * Contributors: williamr@4: * williamr@4: * Description: HPosLmDatabaseInfo class williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: williamr@4: #ifndef HPOSLMDATABASEINFO_H williamr@4: #define HPOSLMDATABASEINFO_H williamr@4: williamr@4: #include williamr@4: #include williamr@4: #include "EPos_TPosLmDatabaseSettings.h" williamr@4: williamr@4: /** williamr@4: * @ref HPosLmDatabaseInfo encapsulates information about a landmark database. williamr@4: * williamr@4: * @lib eposlmdbmanlib.lib williamr@4: * @since S60 3.0 williamr@4: */ williamr@4: class HPosLmDatabaseInfo williamr@4: { williamr@4: public: williamr@4: williamr@4: /** williamr@4: * Two-phased constructor. williamr@4: * williamr@4: * @param[in] aDatabaseUri The URI of the landmark database. williamr@4: * @return A new instance of this class. williamr@4: */ williamr@4: IMPORT_C static HPosLmDatabaseInfo* NewLC( const TDesC& aDatabaseUri ); williamr@4: williamr@4: /** williamr@4: * Two-phased constructor. williamr@4: * williamr@4: * @param[in] aDatabaseUri The URI of the landmark database. williamr@4: * @return A new instance of this class. williamr@4: */ williamr@4: IMPORT_C static HPosLmDatabaseInfo* NewL( const TDesC& aDatabaseUri ); williamr@4: williamr@4: /** williamr@4: * Two-phased copy constructor. williamr@4: * williamr@4: * @param[in] aDatabaseInfo The information instance to copy. williamr@4: * @return A new instance of this class. williamr@4: */ williamr@4: IMPORT_C static HPosLmDatabaseInfo* NewLC( williamr@4: const HPosLmDatabaseInfo& aDatabaseInfo williamr@4: ); williamr@4: williamr@4: /** williamr@4: * Two-phased copy constructor. williamr@4: * williamr@4: * @param[in] aDatabaseInfo The information instance to copy. williamr@4: * @return A new instance of this class. williamr@4: */ williamr@4: IMPORT_C static HPosLmDatabaseInfo* NewL( williamr@4: const HPosLmDatabaseInfo& aDatabaseInfo williamr@4: ); williamr@4: williamr@4: williamr@4: public: williamr@4: williamr@4: /** williamr@4: * Retrieves the database URI. williamr@4: * williamr@4: * @return A pointer to the URI descriptor. This pointer is valid until williamr@4: * the @ref HPosLmDatabaseInfo object is destroyed. williamr@4: */ williamr@4: IMPORT_C TPtrC DatabaseUri() const; williamr@4: williamr@4: /** williamr@4: * Returns the protocol part from the URI which is set. williamr@4: * williamr@4: * Example: If the URI is "file://c:landmarks.ldb" then the protocol is williamr@4: * "file". williamr@4: * williamr@4: * If no protocol is specified, an empty descriptor is returned. This williamr@4: * implies "file" protocol. williamr@4: * williamr@4: * @return A pointer to the protocol descriptor. This pointer is valid williamr@4: * until the @ref HPosLmDatabaseInfo object is destroyed. williamr@4: */ williamr@4: IMPORT_C TPtrC Protocol() const; williamr@4: williamr@4: /** williamr@4: * Returns whether the database is the default database. williamr@4: * williamr@4: * Note: that this attribute is only set if the @ref HPosLmDatabaseInfo williamr@4: * instance has been returned from a @ref CPosLmDatabaseManager williamr@4: * function, e.g. @ref CPosLmDatabaseManager::ListDatabasesL, williamr@4: * @ref CPosLmDatabaseManager::GetDatabaseInfoL, williamr@4: * @ref CPosLmDatabaseManager::RegisterDatabaseL, williamr@4: * @ref CPosLmDatabaseManager::CreateDatabaseL or williamr@4: * @ref CPosLmDatabaseManager::ModifyDatabaseSettingsL. If not, this williamr@4: * function returns @p EFalse. williamr@4: * williamr@4: * @return @p ETrue if the database is the default one, otherwise @p EFalse. williamr@4: */ williamr@4: IMPORT_C TBool IsDefault() const; williamr@4: williamr@4: /** williamr@4: * Returns which storage media the database resides in. williamr@4: * williamr@4: * Note: this attribute is only set if the @ref HPosLmDatabaseInfo williamr@4: * instance has been returned from a @ref CPosLmDatabaseManager williamr@4: * function, e.g. @ref CPosLmDatabaseManager::ListDatabasesL, williamr@4: * @ref CPosLmDatabaseManager::GetDatabaseInfoL, williamr@4: * @ref CPosLmDatabaseManager::RegisterDatabaseL, williamr@4: * @ref CPosLmDatabaseManager::CreateDatabaseL or williamr@4: * @ref CPosLmDatabaseManager::ModifyDatabaseSettingsL. If not, this williamr@4: * function returns @p EMediaUnknown. williamr@4: * williamr@4: * @return The storage media the database resides in. williamr@4: */ williamr@4: IMPORT_C TMediaType DatabaseMedia() const; williamr@4: williamr@4: /** williamr@4: * Returns which database drive the database resides in. williamr@4: * williamr@4: * Note: that this attribute is only set if the @ref HPosLmDatabaseInfo williamr@4: * instance has been returned from a @ref CPosLmDatabaseManager williamr@4: * function, e.g. @ref CPosLmDatabaseManager::ListDatabasesL, williamr@4: * @ref CPosLmDatabaseManager::GetDatabaseInfoL, williamr@4: * @ref CPosLmDatabaseManager::RegisterDatabaseL, williamr@4: * @ref CPosLmDatabaseManager::CreateDatabaseL or williamr@4: * @ref CPosLmDatabaseManager::ModifyDatabaseSettingsL. If not, this williamr@4: * function returns 0. williamr@4: * williamr@4: * If database drive is not applicable for the database, e.g. the williamr@4: * database is remote, this function returns 0. williamr@4: * williamr@4: * @return The drive letter for the drive where the database resides, or williamr@4: * 0 if the letter is not set. williamr@4: */ williamr@4: IMPORT_C TChar DatabaseDrive() const; williamr@4: williamr@4: /** williamr@4: * Retrieve a const reference to the database settings. williamr@4: * williamr@4: * The const reference can be used to read the database settings. williamr@4: * williamr@4: * @returns Const reference to the database settings williamr@4: */ williamr@4: IMPORT_C const TPosLmDatabaseSettings& Settings() const; williamr@4: williamr@4: /** williamr@4: * Retrieve a reference to the database settings. williamr@4: * williamr@4: * The reference can be used to read and write to the database settings. williamr@4: * williamr@4: * @returns Reference to the database settings williamr@4: */ williamr@4: IMPORT_C TPosLmDatabaseSettings& Settings(); williamr@4: williamr@4: /** williamr@4: * Returns the size in bytes of this object. williamr@4: * williamr@4: * @returns The size of this object. williamr@4: */ williamr@4: IMPORT_C TInt Size() const; williamr@4: williamr@4: /** williamr@4: * @internal */ williamr@4: /* williamr@4: * Sets the default database indicator flag. williamr@4: * This flag is used to indicate if the database described by the williamr@4: * object is the default database. williamr@4: * williamr@4: * @param[in] aIsDefault @p ETrue if the database is the default database, williamr@4: * otherwise @p ETrue. williamr@4: */ williamr@4: void SetDefault( TBool aIsDefault ); williamr@4: williamr@4: /** williamr@4: * @internal */ williamr@4: /* williamr@4: * Sets the database media type. williamr@4: * williamr@4: * @param[in] aMediaType The media type. williamr@4: */ williamr@4: void SetMediaType( TMediaType aMediaType ); williamr@4: williamr@4: /** williamr@4: * @internal */ williamr@4: /* williamr@4: * Sets the database drive. williamr@4: * williamr@4: * @param[in] aDatabaseDrive The database drive letter. williamr@4: */ williamr@4: void SetDatabaseDrive( TChar aDatabaseDrive ); williamr@4: williamr@4: private: williamr@4: williamr@4: // C++ constructor. williamr@4: HPosLmDatabaseInfo(const TDesC& aDatabaseUri); williamr@4: williamr@4: // C++ copy constructor. williamr@4: HPosLmDatabaseInfo(const HPosLmDatabaseInfo& aDatabaseInfo); williamr@4: williamr@4: // Allocates memory for URI descriptor during construction. williamr@4: static TAny* AllocateL(const TDesC& aDatabaseUri); williamr@4: williamr@4: // Sets URI descriptor during construction. williamr@4: void SetDatabaseUri(const TDesC& aDatabaseUri); williamr@4: williamr@4: // Calculates buffer offset so that buffer is 4-byte aligned williamr@4: static TInt BufferOffset(); williamr@4: williamr@4: // Prohibit assigment operator williamr@4: HPosLmDatabaseInfo& operator= ( const HPosLmDatabaseInfo& ); williamr@4: williamr@4: private: williamr@4: williamr@4: TPosLmDatabaseSettings iSettings; williamr@4: TMediaType iDatabaseMedia; williamr@4: TChar iDatabaseDrive; williamr@4: TBool iIsDefault; williamr@4: TUint8 iBuffer[1]; // Must be at end of class williamr@4: williamr@4: }; williamr@4: williamr@4: #endif // HPOSLMDATABASEINFO_H williamr@4: williamr@4: