williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #if !defined(__DATASTOR_H__) williamr@2: #define __DATASTOR_H__ williamr@2: williamr@2: #if !defined(__E32BASE_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined(__S32FILE_H__) williamr@2: #include williamr@2: #endif williamr@2: #if !defined(__APMSTD_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: class RReadStream; williamr@2: class RWriteStream; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: const TUid KUidDatastor = {0x1000071E}; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: const TUid KUidDatastorSettings = {0x10000790}; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: _LIT(KIniFileName,":\\private\\10003a3f\\Dtstor.ini"); williamr@2: williamr@2: /** williamr@2: @internalTechnology williamr@2: @released williamr@2: */ williamr@2: class TMappingDataTypeToApp williamr@2: { williamr@2: public: williamr@2: IMPORT_C TMappingDataTypeToApp(); williamr@2: IMPORT_C TMappingDataTypeToApp(const TDataType& aDataType, williamr@2: TDataTypePriority aPriority, TUid aAppUid); williamr@2: IMPORT_C TMappingDataTypeToApp(const TDataType& aDataType, williamr@2: TDataTypePriority aPriority, TUid aAppUid, TUid aServiceUid); williamr@2: IMPORT_C void InternalizeL(RReadStream& aStream); williamr@2: IMPORT_C void ExternalizeL(RWriteStream& aStream) const; williamr@2: public: williamr@2: TDataType iDataType; williamr@2: TDataTypePriority iPriority; williamr@2: TUid iAppUid; // Uid [2] of the target application williamr@2: TUid iServiceUid; williamr@2: }; williamr@2: williamr@2: /** A store of mappings between data types, the UIDs of applications that williamr@2: can handle them and the priority at which the application handles them. williamr@2: williamr@2: @internalTechnology williamr@2: @released williamr@2: */ williamr@2: class CTypeStoreManager : public CBase williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CTypeStoreManager* NewL(RFs& aFs); williamr@2: IMPORT_C ~CTypeStoreManager(); williamr@2: // Persistence williamr@2: IMPORT_C void StoreL(); williamr@2: IMPORT_C void RestoreL(); williamr@2: IMPORT_C void InternalizeL(RReadStream& aStream); williamr@2: IMPORT_C void ExternalizeL(RWriteStream& aStream) const; williamr@2: // Enquiry williamr@2: IMPORT_C void GetAppByDataType(const TDataType& aDataType, TUid& aUid) const; williamr@2: IMPORT_C void GetAppByDataType(const TDataType& aDataType, williamr@2: TUid aServiceUid, TUid& aUid) const; williamr@2: IMPORT_C void GetDataTypesByAppL(TUid aUid, CArrayFix* aTypeArray) const; williamr@2: IMPORT_C const CArrayFixFlat& MappingArray() const; williamr@2: // Management williamr@2: IMPORT_C void InsertDataMappingL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid); williamr@2: IMPORT_C void InsertDataMappingL(const TDataType& aDataType, williamr@2: TDataTypePriority aPriority, TUid aUid, TUid aServiceUid); williamr@2: IMPORT_C TBool InsertIfHigherL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid); williamr@2: IMPORT_C TBool InsertIfHigherL(const TDataType& aDataType, williamr@2: TDataTypePriority aPriority, TUid aUid, TUid aServiceUid); williamr@2: IMPORT_C void DeleteDataMapping(const TDataType& aDataType); williamr@2: IMPORT_C void DeleteDataMapping(const TDataType& aDataType, williamr@2: TUid aServiceUid); williamr@2: inline TPtrC IniFileName() const; williamr@2: IMPORT_C void InsertAndStoreDataMappingL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid, TUid aServiceUid); williamr@2: IMPORT_C void InsertAndStoreDataMappingL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid); williamr@2: IMPORT_C TBool InsertAndStoreIfHigherL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid); williamr@2: IMPORT_C TBool InsertAndStoreIfHigherL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid, TUid aServiceUid); williamr@2: IMPORT_C void DeleteAndStoreDataMappingL(const TDataType& aDataType); williamr@2: IMPORT_C void DeleteAndStoreDataMappingL(const TDataType& aDataType, TUid aServiceUid); williamr@2: IMPORT_C TBool DeleteApplicationDataMappings(const TUid aAppUid); williamr@2: williamr@2: private: williamr@2: CDictionaryStore* OpenIniFileLC() const; williamr@2: CTypeStoreManager(RFs& aFs); williamr@2: TInt FindDataMapping(const TDataType& aDataType, const TUid& aServiceUid) const; williamr@2: void ConstructL(); williamr@2: private: williamr@2: CArrayFixFlat iAppMappings; williamr@2: RFs& iFs; williamr@2: RBuf iIniFileName; williamr@2: }; williamr@2: williamr@2: inline TPtrC CTypeStoreManager::IniFileName() const williamr@2: { williamr@2: return iIniFileName; williamr@2: } williamr@2: williamr@2: #endif