epoc32/include/mw/ptilanguagedatabase.h
branchSymbian2
changeset 2 2fe1408b6811
parent 1 666f914201fb
child 4 837f303aceeb
--- a/epoc32/include/mw/ptilanguagedatabase.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/mw/ptilanguagedatabase.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,262 @@
-ptilanguagedatabase.h
+/*
+* Copyright (c) 2005-2007 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 "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:               Language database class declaration.
+*
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#ifndef _PTI_LANGUAGE_DATABASE_H
+#define _PTI_LANGUAGE_DATABASE_H
+
+// INCLUDES
+#include <badesca.h> 
+#include "PtiDefs.h"
+
+// For accessing keyboard data through LangData() method. If aIndex
+// parameter is higher than KKdbThreshold client is accessing 
+// keyboard data instead of ldb data.
+const TInt KKdbThreshold = 500;
+
+// For accessing key bindings through LangData() method. If aIndex
+// parameter is higher than KKdbThreshold client is accessing 
+// key bindings data instead of ldb or kdb data.
+const TInt KKdbBindingThreshold = 2500;
+
+const TInt KOpaqueDataLen = 8;
+
+
+//
+// TPtiLangDatabaseMapping
+//
+class TPtiLangDatabaseMapping
+	{
+	public:
+		TInt iUid;
+		TInt iLangCode;
+	};	
+
+//
+// TPtiLangDatabaseMappingOpaque
+//
+class TPtiLangDatabaseMappingOpaque
+	{
+	public:
+		TInt iUid;
+		TInt iLangCode;
+		TBuf8<KOpaqueDataLen> iOpaque;
+	};
+	
+	
+//
+// TPtiLangDatabaseOpaqueBinding
+//		
+class TPtiLangDatabaseOpaqueBinding
+    {
+    public:
+        TInt iUid;
+       	TBuf8<KOpaqueDataLen> iOpaque;    
+    };	
+	
+	
+/**
+* An interface class for wrapping language data. Core object may use this
+* interface for accessing language data (but it is also ok to use any other
+* way, since it is part of core object's internal implementation).
+*/	
+class MPtiLanguageDatabase
+	{
+	public:
+		/**
+		* Implementation UID for core object owning this data.
+		*
+		* @since S60 V3.0
+		* @return Implementation Uid value of owning core object.
+		*/	
+		virtual TInt CoreUID() const = 0;
+		
+		/**
+		* Number on languages implemented in this database.
+		* 
+		* @since S60 V3.0
+		* return Number languages implemented in this database.
+		*/
+		virtual TInt NumLanguages() const = 0;
+		
+		/**
+		* Symbian OS language code for language data.
+		*
+		* @since S60 V3.0
+		* @param aIndex Index of language implementation (in case one database holds data
+		*                for several languages).
+		* @return Symbian OS language code for language data identified by aIndex. 
+		*         0, if aIndex is greater than number of languages in this database.
+		*/ 
+		virtual TInt LanguageCode(TInt aIndex) const = 0;
+		
+		/**
+		* Returns sub-language code. The meaning of this value depends on core object
+		* implementation. Ususally this value is needed for enumerating several dialects
+		* that are related to one Symbian OS language constant.
+		*
+		* @since S60 V3.0
+		* @return Sub-language id. 
+		*/ 
+		virtual TInt SubLanguageCode(TInt aIndex) const = 0;
+		
+		/**
+		* Returns pointer to raw language data. 
+		* on the core object implementation.
+		*
+		* @since S60 V3.0
+		* @param aIndex Index of language implementation.
+		* @return Pointer to language data array.
+		*/
+		virtual TInt8* LangData(TInt aIndex) const = 0;
+		
+		/**
+		* Returns pointer to language data. The meaning of the data in array depends
+		* on the core object implementation.
+		*
+		* @since S60 V3.0
+		* @param aIndex Index of language implementation.		
+		* @param aNativeParams Core object related extra parameters.
+		* @return Pointer to language data array.
+		*/
+		virtual TInt8* LangData(TInt aIndex, TAny* aNativeParams) const = 0;
+				
+		/**
+		* Returns pointer to PinYin phrase input related data.
+		*		
+		* @since S60 V3.0
+		* @return Pointer to PinYin phrase input data.
+		*/
+		virtual TInt8* PinyinPhraseData() const = 0;
+		
+		/**
+		* Returns pointer to ZhuYin phrase input related data.
+		*		
+		* @since S60 V3.0
+		* @return Pointer to ZhuYin phrase input data.
+		*/
+		virtual TInt8* ZhuyinPhraseData() const = 0;
+		
+		/**
+		* Returns core object's internal language id value. The meaning of this
+		* value depends on core object implementation.
+		*
+		* @since S60 V3.0
+		* @return Core object internal language id.
+		*/		
+		virtual TInt NativeId(TInt aIndex) const = 0;
+	};
+
+
+/**
+* Default implementation for MPtiLanguageDatabase interface.
+*/
+class CPtiLanguageDatabase : public CBase, public MPtiLanguageDatabase
+	{
+	public: 
+		/**
+		* Creates a language database instance for given implemenation UID.
+		* 
+		* @since S60 V3.0
+		* @return Pointer to language database instance.
+		*         NULL if not found. 
+		*/
+		IMPORT_C static CPtiLanguageDatabase* CreateDatabaseL(TUid aImplUid);
+		
+		/**
+		* Returns a list of all the availbale language databases related to given core object.
+		* List will be the topmost item in cleanup stack.
+		*
+		* @since S60 V3.0
+		* @param aCoreUid Implementation uid for core object.
+		* @return Pointer to a list containing implemention uids of language databases.
+		*/
+		IMPORT_C static CArrayFix<TInt>* ListDatabasesLC(TInt aCoreUid);
+		
+		/**
+		* Returns Symbian OS language code for the first language in given language database.
+		*
+		* @since S60 V3.0
+		* @param aUid An implementation uid for language database.
+		* @return Symbian OS language constant.
+		*         0, if not found.
+		*/		
+		IMPORT_C static TInt LanguageCodeForUid(TInt aUid);
+		
+		/**
+		* Fills given array with TPtiLangDatabaseMapping bindings for given core object. 
+		* Items in list bind Symbian OS language code to language database implemantion
+		* uid.
+		*
+		* @since S60 V3.0
+		* @param aCoreUid Core object implemenation uid.
+		* @param aResult Resulting list.
+		* @return Number of items in aResult.
+		*/
+		IMPORT_C static TInt CreateMappingTableL(TInt aCoreUid, RArray<TPtiLangDatabaseMapping>& aResult);
+		IMPORT_C static TInt CreateMappingTableWithOpaqueL(TInt aCoreUid, RArray<TPtiLangDatabaseMappingOpaque>& aResult);
+
+	public: 
+		IMPORT_C ~CPtiLanguageDatabase();
+			
+	public: // Empty default implementations.
+		IMPORT_C TInt CoreUID() const;
+		IMPORT_C TInt NumLanguages() const;
+		IMPORT_C TInt LanguageCode(TInt aIndex) const;
+		IMPORT_C TInt SubLanguageCode(TInt aIndex) const;
+		IMPORT_C TInt8* LangData(TInt aIndex) const;
+		IMPORT_C TInt8* LangData(TInt aIndex, TAny* aNativeParams) const;
+		IMPORT_C TInt8* PinyinPhraseData() const;
+		IMPORT_C TInt8* ZhuyinPhraseData() const;
+		IMPORT_C TInt NativeId(TInt aIndex) const;
+
+	public:
+		inline void SetDestructorKeyId(TInt aDtorKeyId);
+
+	private:
+		TInt iDtorKeyId;
+		TInt Reserved_1;
+	};
+
+
+// ---------------------------------------------------------------------------
+// CPtiLanguageDatabase::SetDestructorKeyId
+// 
+// ---------------------------------------------------------------------------
+// 	
+inline void CPtiLanguageDatabase::SetDestructorKeyId(TInt aDtorKeyId)
+	{
+	iDtorKeyId = aDtorKeyId;
+	}
+
+#endif // _PTI_LANGUAGE_DATABASE_H
+
+// End of file
+
+