williamr@2: /* williamr@2: * Copyright (c) 2003-2006 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0"" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: PtiLanguage class definitions. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: #ifndef _PTI_LANGUAGE_H williamr@2: #define _PTI_LANGUAGE_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include "PtiDefs.h" williamr@2: williamr@2: const TInt KMaxMultitapResourceFileName = 20; williamr@2: const TInt KMaxQwertyResourceFileName = 32; williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class MPtiKeyMappings; williamr@2: class MPtiCore; williamr@2: class CPtiCore; williamr@2: class CPtiKeyMapData; williamr@2: class CPtiKeyMapDataFactory; williamr@2: williamr@2: /** williamr@2: * An item in list used for binding a core object to input mode. williamr@2: */ williamr@2: class TPtiCoreBinding williamr@2: { williamr@2: public: williamr@2: TInt iInputMode; williamr@2: MPtiCore* iCore; williamr@2: }; williamr@2: williamr@2: williamr@2: /* williamr@2: * Helper class for storing keymapping pointers. williamr@2: */ williamr@2: class TPtiKeyMappingsHolder williamr@2: { williamr@2: public: williamr@2: TPtiKeyMappingsHolder(); williamr@2: ~TPtiKeyMappingsHolder(); williamr@2: williamr@2: void Clear(); williamr@2: williamr@2: MPtiKeyMappings* iKeyMappings; williamr@2: MPtiKeyMappings* iQwertyKeyMappings; williamr@2: MPtiKeyMappings* iHalfQwertyMappings; williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * Client side interface for querying PtiEngine language related attributes. williamr@2: * All PtiEngine client side API methods related to handling languages access williamr@2: * languages through this interface class. williamr@2: */ williamr@2: class MPtiLanguage williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Returns a boolean value indicating whether this language supports williamr@2: * requested input mode. williamr@2: * williamr@2: * @param aMode A input mode to be queried. williamr@2: * @return ETrue if this language supports requested input mode. williamr@2: * EFalse otherwise. williamr@2: */ williamr@2: virtual TBool HasInputMode(TPtiEngineInputMode aMode) const = 0; williamr@2: williamr@2: /** williamr@2: * Returns list of all inputmodes currently supported by this language. williamr@2: * williamr@2: * @param aResult List of supported input modes will be stored here. williamr@2: */ williamr@2: virtual void GetAvailableInputModesL(CArrayFix* aResult) = 0; williamr@2: williamr@2: /** williamr@2: * Returns Symbian OS language code for this language. williamr@2: * williamr@2: * @return Symbian OS language code. williamr@2: */ williamr@2: virtual TInt LanguageCode() const = 0; williamr@2: williamr@2: /** williamr@2: * Returns localized name for this language. williamr@2: * williamr@2: * @return A constant pointer to localized language name. williamr@2: */ williamr@2: virtual TPtrC LocalizedName() const = 0; williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: * Implementation class for a PtiEngine language. This class is used williamr@2: * mainly in PtiEngine and core objects code and it implements clients side williamr@2: * language interface class. williamr@2: * PtiEngine maintains language list containing instances of this class. williamr@2: * CPtiCoreLanguage class also maintains list of input mode> bindings. williamr@2: */ williamr@2: NONSHARABLE_CLASS(CPtiCoreLanguage) : public CBase, public MPtiLanguage williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CPtiCoreLanguage* NewL(); williamr@2: IMPORT_C ~CPtiCoreLanguage(); williamr@2: williamr@2: /** williamr@2: * Sets multitapping keymappings. williamr@2: * williamr@2: * @param aMappings Pointer to keymappings object to be set. williamr@2: */ williamr@2: IMPORT_C void SetKeyMappings(MPtiKeyMappings* aMappings); williamr@2: williamr@2: /** williamr@2: * Sets qwerty keymappings. williamr@2: * williamr@2: * @param aMappings Pointer to keymappings object to be set. williamr@2: */ williamr@2: IMPORT_C void SetQwertyKeyMappings(MPtiKeyMappings* aMappings); williamr@2: williamr@2: /** williamr@2: * Sets Symbian OS language code for this language. williamr@2: * williamr@2: * @param aCode Language code to be set. williamr@2: */ williamr@2: IMPORT_C void SetLanguageCode(TInt aCode); williamr@2: williamr@2: /** williamr@2: * Returns pointer to multitapping keymappings object. williamr@2: * williamr@2: * @return Pointer to current multitapping keymappings. williamr@2: * NULL if no multitapping keymappings available. williamr@2: */ williamr@2: IMPORT_C MPtiKeyMappings* GetKeymappings() const; williamr@2: williamr@2: /** williamr@2: * Returns pointer to qwerty keymappings object. williamr@2: * williamr@2: * @return Pointer to current qwerty keymappings. williamr@2: * NULL if no qwerty keymappings available. williamr@2: */ williamr@2: IMPORT_C MPtiKeyMappings* GetQwertyKeymappings() const; williamr@2: williamr@2: /** williamr@2: * Resets current multitapping keymappings. williamr@2: */ williamr@2: IMPORT_C void ClearMultitapping(); williamr@2: williamr@2: /** williamr@2: * Resets current qwerty keymappings. williamr@2: */ williamr@2: IMPORT_C void ClearQwerty(); williamr@2: williamr@2: /** williamr@2: * Sets localized language name. williamr@2: * williamr@2: * @param aName Language name to be set. williamr@2: */ williamr@2: IMPORT_C void SetLocalizedName(const TDesC& aName); williamr@2: williamr@2: /** williamr@2: * Returns descriptor pointing to localized language name. williamr@2: * williamr@2: * @return Localoized language name descriptor. williamr@2: */ williamr@2: IMPORT_C TDes& LocalizedNameDes(); williamr@2: williamr@2: /** williamr@2: * Returns core object for given input mode. williamr@2: * williamr@2: * @aMode Input mode to be queried. williamr@2: * @return Pointer to core object. williamr@2: * NULL if no core object is asigned to given input mode. williamr@2: */ williamr@2: IMPORT_C MPtiCore* GetCore(TPtiEngineInputMode aMode); williamr@2: williamr@2: /** williamr@2: * Sets core object for given input mode. If input mode already williamr@2: * has a core object asigned to it, it will be replaced. williamr@2: * williamr@2: * @param aCore Pointer to core object williamr@2: * @param aMode Input mode for core object. williamr@2: */ williamr@2: IMPORT_C void SetCore(MPtiCore *aCore, TPtiEngineInputMode aMode); williamr@2: williamr@2: /** williamr@2: * Returns an array of available input modes for this language object. williamr@2: * williamr@2: * @param aResult Resulting input mode list. williamr@2: */ williamr@2: IMPORT_C void GetAvailableInputModesL(CArrayFix* aResult); williamr@2: williamr@2: /** williamr@2: * Returns an array of available input modes for this language object. williamr@2: * williamr@2: * @param aResult Resulting input mode list. williamr@2: * @since 3.0 williamr@2: */ williamr@2: IMPORT_C void GetAvailableInputModesL(RArray& aResult); williamr@2: williamr@2: /** williamr@2: * Returns a boolean value indicating whether this language williamr@2: * supports given input mode. williamr@2: * williamr@2: * @param aMode Input mode to be queried. williamr@2: * @return ETrue if input mode is supported. williamr@2: * EFalse otherwise. williamr@2: */ williamr@2: IMPORT_C TBool HasInputMode(TPtiEngineInputMode aMode) const; williamr@2: williamr@2: /** williamr@2: * Returns Symbian OS language code for this language object. williamr@2: * williamr@2: * @return Language code williamr@2: */ williamr@2: inline TInt LanguageCode() const; williamr@2: williamr@2: /** williamr@2: * Returns constant descriptor pointing to localized name for williamr@2: * this language. williamr@2: * williamr@2: * @return Localized language name. williamr@2: */ williamr@2: inline TPtrC LocalizedName() const; williamr@2: williamr@2: /** williamr@2: * Returns a boolean value indicating whether given core object is williamr@2: * already asigned to some input mode for this language. williamr@2: * williamr@2: * @param aCore A core object to be queried. williamr@2: * @return ETrue if given core object is asigned to any input mode. williamr@2: * EFalse otherwise. williamr@2: */ williamr@2: IMPORT_C TBool HasCore(MPtiCore* aCore) const; williamr@2: williamr@2: /** williamr@2: * Removes detachs given core object from all input modes it is attached to. williamr@2: * williamr@2: * @param aCore A core object to be detached. williamr@2: */ williamr@2: IMPORT_C void RemoveCore(MPtiCore* aCore); williamr@2: williamr@2: /** williamr@2: * Returns pointer to half qwerty keymappings object. williamr@2: * williamr@2: * @return Pointer to half qwerty keymappings. williamr@2: * NULL if no half qwerty keymappings available. williamr@2: */ williamr@2: IMPORT_C MPtiKeyMappings* GetHalfQwertyKeymappings() const; williamr@2: williamr@2: /** williamr@2: * Sets half qwerty keymappings. williamr@2: * williamr@2: * @param aMappings Pointer to keymappings object to be set. williamr@2: */ williamr@2: IMPORT_C void SetHalfQwertyKeyMappings(MPtiKeyMappings* aMappings); williamr@2: williamr@2: /** williamr@2: * Resets current half qwerty keymappings. williamr@2: */ williamr@2: IMPORT_C void ClearHalfQwerty(); williamr@2: williamr@2: /** williamr@2: * Sets keymap data factory class. williamr@2: * williamr@2: * @since S60 5.0 williamr@2: * @param aFactory A keymap data factory to be used. williamr@2: */ williamr@2: void SetKeyMapDataFactory(CPtiKeyMapDataFactory* aFactory); williamr@2: williamr@2: /** williamr@2: * Returns active data factory. williamr@2: * williamr@2: * @since S60 5.0 williamr@2: * @return A pointer to active data factory. williamr@2: */ williamr@2: IMPORT_C CPtiKeyMapDataFactory* DataFactory() const; williamr@2: williamr@2: /** williamr@2: * Returns raw keymap data object. williamr@2: * williamr@2: * @since S60 5.0 williamr@2: * @return A pointer to raw keymap data object. williamr@2: */ williamr@2: IMPORT_C CPtiKeyMapData* RawKeyMapData() const; williamr@2: williamr@2: private: williamr@2: CPtiCoreLanguage(); williamr@2: void ConstructL(); williamr@2: void Clear(); williamr@2: void LoadKeymappingsL() const; williamr@2: CPtiCore* GetCoreForNumericMode() const; williamr@2: void SetCoreLocal(MPtiCore *aCore, TPtiEngineInputMode aMode) const; williamr@2: williamr@2: private: williamr@2: TInt iLanguageCode; williamr@2: TPtiKeyMappingsHolder* iHolder; williamr@2: CPtiKeyMapDataFactory* iDataFactory; // Not owned williamr@2: TBuf iLocalizedName; williamr@2: mutable RArray iCores; williamr@2: mutable CPtiKeyMapData* iKeyMapData; // Owns williamr@2: }; williamr@2: williamr@2: #include williamr@2: williamr@2: #endif // _PTI_LANGUAGE_H williamr@2: williamr@2: // End of file williamr@2: