genericservices/mimerecognitionfw/inc/DATASTOR.H
changeset 0 e4d67989cc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/genericservices/mimerecognitionfw/inc/DATASTOR.H	Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,126 @@
+// Copyright (c) 1997-2009 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:
+//
+
+#if !defined(__DATASTOR_H__)
+#define __DATASTOR_H__
+
+#if !defined(__E32BASE_H__)
+#include <e32base.h>
+#endif
+
+#if !defined(__S32FILE_H__)
+#include <s32file.h>
+#endif
+#if !defined(__APMSTD_H__)
+#include <apmstd.h>
+#endif
+
+class RReadStream;
+class RWriteStream;
+
+/**
+@internalComponent
+*/
+const TUid KUidDatastor = {0x1000071E};
+
+/**
+@internalComponent
+*/
+const TUid KUidDatastorSettings = {0x10000790};
+
+/**
+@internalComponent
+*/
+_LIT(KIniFileName,":\\private\\10003a3f\\Dtstor.ini");
+
+/**
+@internalTechnology
+@released
+*/
+class TMappingDataTypeToApp
+	{
+public:
+	IMPORT_C TMappingDataTypeToApp();
+	IMPORT_C TMappingDataTypeToApp(const TDataType& aDataType, 
+		TDataTypePriority aPriority, TUid aAppUid);
+	IMPORT_C TMappingDataTypeToApp(const TDataType& aDataType, 
+		TDataTypePriority aPriority, TUid aAppUid, TUid aServiceUid);
+	IMPORT_C void InternalizeL(RReadStream& aStream);
+	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+public:
+	TDataType iDataType;
+	TDataTypePriority iPriority;
+	TUid iAppUid; // Uid [2] of the target application
+	TUid iServiceUid;
+	};
+
+/** A store of mappings between data types, the UIDs of applications that 
+can handle them and the priority at which the application handles them.
+
+@internalTechnology
+@released
+*/					   
+class CTypeStoreManager : public CBase
+	{
+public:
+	IMPORT_C static CTypeStoreManager* NewL(RFs& aFs);
+	IMPORT_C ~CTypeStoreManager();
+	// Persistence
+	IMPORT_C void StoreL();
+	IMPORT_C void RestoreL();
+	IMPORT_C void InternalizeL(RReadStream& aStream);
+	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+	// Enquiry
+	IMPORT_C void GetAppByDataType(const TDataType& aDataType, TUid& aUid) const;
+	IMPORT_C void GetAppByDataType(const TDataType& aDataType, 
+		TUid aServiceUid, TUid& aUid) const;
+	IMPORT_C void GetDataTypesByAppL(TUid aUid, CArrayFix<TDataType>* aTypeArray) const;
+	IMPORT_C const CArrayFixFlat<TMappingDataTypeToApp>& MappingArray() const;
+	// Management
+	IMPORT_C void InsertDataMappingL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid);
+	IMPORT_C void InsertDataMappingL(const TDataType& aDataType, 
+		TDataTypePriority aPriority, TUid aUid, TUid aServiceUid);
+	IMPORT_C TBool InsertIfHigherL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid);
+	IMPORT_C TBool InsertIfHigherL(const TDataType& aDataType, 
+		TDataTypePriority aPriority, TUid aUid, TUid aServiceUid);
+	IMPORT_C void DeleteDataMapping(const TDataType& aDataType);
+	IMPORT_C void DeleteDataMapping(const TDataType& aDataType, 
+		TUid aServiceUid);
+	inline TPtrC IniFileName() const;
+	IMPORT_C void InsertAndStoreDataMappingL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid, TUid aServiceUid);
+	IMPORT_C void InsertAndStoreDataMappingL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid);
+	IMPORT_C TBool InsertAndStoreIfHigherL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid);
+	IMPORT_C TBool InsertAndStoreIfHigherL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid, TUid aServiceUid);
+	IMPORT_C void DeleteAndStoreDataMappingL(const TDataType& aDataType);
+	IMPORT_C void DeleteAndStoreDataMappingL(const TDataType& aDataType, TUid aServiceUid);
+    IMPORT_C TBool DeleteApplicationDataMappings(const TUid aAppUid);
+
+private:
+	CDictionaryStore* OpenIniFileLC() const;
+	CTypeStoreManager(RFs& aFs);
+	TInt FindDataMapping(const TDataType& aDataType, const TUid& aServiceUid) const;
+    void ConstructL();	
+private:
+	CArrayFixFlat<TMappingDataTypeToApp> iAppMappings;
+	RFs& iFs;
+	RBuf iIniFileName;
+	};
+
+inline TPtrC CTypeStoreManager::IniFileName() const
+	{
+	return iIniFileName;
+	}
+
+#endif