--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputarc/inc/peninputlayoutenginc/peninputimefinder.h Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,276 @@
+/*
+* 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 "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: header file of peninput ime plugin finder
+*
+*/
+
+
+
+#ifndef C_CPENINPUTIMEFINDER_H
+#define C_CPENINPUTIMEFINDER_H
+
+// INCLUDES
+#include <e32base.h>
+#include <badesca.h>
+#include <aknfeppeninputimeplugin.h>
+
+#include <AknFepGlobalEnums.h>
+
+class CPtiEngine;
+class RPeninputServer;
+class TImePluginLangAndMode;
+
+class TInternalImePlguinImplDetail
+ {
+public:
+ TInt iImplementationId;
+ TInt iMode;
+ TInt iMeritValue;
+ TInt iLanguage;
+ };
+
+/**
+* CImePluginFinder class.
+*
+* This is main class for outside users to find
+*
+* @lib feplayouteng.lib
+* @since S60 V4.0
+*/
+class CImePluginFinder : public CBase
+ {
+public:
+ /**
+ * Two phase constructor.
+ *
+ * @since S60 V4.0
+ * @return The layout engine instance
+ */
+ static CImePluginFinder* NewL();
+
+ /**
+ * Destructor.
+ *
+ * @since S60 V4.0
+ */
+ ~CImePluginFinder();
+
+ /**
+ * Initialze the finder and prepare all internal data
+ *
+ * @since S60 V4.0
+ * @param aPtiEngine The ptiEngine instance, used by Ime plug-in
+ * @return None
+ */
+ void InitializeL(CPtiEngine* aPtiEngine);
+
+ /**
+ * Get pen support language list
+ *
+ * @since S60 V4.0
+ * @param aLanguageLists A reference to a client owned array which
+ * will be filled with languages code
+ * @return None
+ */
+ void SupportLanguages(RArray<TInt>& aLanguageLists);
+
+ /**
+ * Get IME plugin implementation list for specified language and plugin mode
+ *
+ * @since S60 V4.0
+ * @param aLanguage The required language code.
+ * @param aPluginMode The required IME plugin mode
+ * @param aImplmentationIds A reference to a client owned array which
+ * will be filled with IME implementation code
+ * @return None
+ */
+ void GetImePlugins(TInt aLanguage, TInt aPluginMode, RArray<TInt>& aImplmentationIds);
+
+ /**
+ * Get IME plugin implementation list for specified language
+ *
+ * @since S60 V4.0
+ * @param aLanguage The required language code.
+ * @param aImplmentationIds A reference to a client owned array which
+ * will be filled with IME implementation code
+ * @return None
+ */
+ void GetImePlugins(TInt aLanguage, RArray<TInt>& aImplmentationIds);
+
+ /**
+ * Test the Ime Finder initialiaztion state
+ *
+ * @since S60 V4.0
+ * @return ETrue if initialzed, otherwise EFalse.
+ */
+ TBool Initialized();
+
+ /**
+ * Refresh internal data after system changes, such as disk insert/remove,
+ * application install/uninstall and so on.
+ *
+ * @since S60 V4.0
+ * @return None
+ */
+ void RefreshL(CPtiEngine* aPtiEngine);
+
+ /**
+ * Is support TPluginInputMode for aLanguage.
+ *
+ * @since S60 v4.0
+ * @param aLanguage Value of TLanguage
+ * @param aMode Value of TPluginInputMode
+ * @return ETrue if supported. Otherwise EFalse.
+ */
+ TBool IsSupportPluginMode( TLanguage aLanguage, TPluginInputMode aMode ) ;
+private:
+
+ /**
+ * Constructor
+ *
+ * @since S60 V4.0
+ */
+ CImePluginFinder();
+
+ /**
+ * Internal version of get IME plugin implementation list
+ * for specified language and plugin mode
+ *
+ * @since S60 V4.0
+ * @param aLanguage The required language code.
+ * @param aPluginMode The required IME plugin mode
+ * @param aImplmentationIds A reference to a client owned array which
+ * will be filled with IME implementation code
+ * @return None
+ */
+ void InternalGetImePlugins(TInt aLanguage, TInt aPluginMode, RArray<TInt>& aImplmentationIds);
+
+ /**
+ * Free a list
+ *
+ * @since S60 V4.0
+ * @param aList A reference to the list
+ * @return None
+ */
+ void FreeList(RArray<TImePluginLangAndMode>& aList);
+
+ /**
+ * Reset all data and free memory
+ *
+ * @return None
+ */
+ void Reset();
+
+ /**
+ * Add a implementation into internal data structure
+ *
+ * @param aImplDetail A reference to IME implenmentation detail.
+ * @return None
+ */
+ void AddImplementationL(const TInternalImePlguinImplDetail& aImplDetail);
+
+private:
+
+ /**
+ * Implementation list, only contains pointer to iAllImplementations
+ */
+ RArray<TImePluginLangAndMode> iPluginList;
+
+ /**
+ * All implentation list
+ */
+ RArray<TInternalImePlguinImplDetail> iAllImplementations;
+
+ /**
+ * Flag of initialzed status
+ */
+ TBool iInitialized;
+ };
+
+/**
+* CImePluginList class.
+*
+* This is class storing ime plugin prioritized
+*
+* @lib feplayouteng.lib
+* @since S60 V4.0
+*/
+class CImePluginList: public CBase
+ {
+public:
+
+ /**
+ * Constructor
+ *
+ * @since S60 V4.0
+ */
+ CImePluginList();
+
+ /**
+ * Destructor
+ *
+ * @since S60 V4.0
+ */
+ ~CImePluginList();
+
+ /**
+ * Insert a implementation in the list and keep priority order
+ *
+ * @param aImplDetail A reference to IME implenmentation detail.
+ * @return None
+ */
+ void Insert(const TInternalImePlguinImplDetail* aImplDetail);
+
+ /**
+ * Get Ime plugin list
+ *
+ * @param aImplmentationIds A reference to internal implementation list.
+ * @return None
+ */
+ void GetImePlugins(RArray<TInt>& aImplmentationIds);
+private:
+
+ /**
+ * Priorited Ime plugin list
+ */
+ RPointerArray<TInternalImePlguinImplDetail> iPriList;
+ };
+
+/**
+* TImePluginLangAndMode structure.
+*
+*/
+class TImePluginLangAndMode
+ {
+public:
+
+ /**
+ * Language code
+ */
+ TInt8 iLanguage;
+
+ /**
+ * Language code
+ */
+ TInt16 iMode;
+
+ /**
+ * Ime plugin list for speicial plugin mode and language of iLanguage
+ */
+ CImePluginList* iImePluginList;
+ };
+
+#endif C_CPENINPUTIMEFINDER_H
+
+// End of file