predictivesearch/PcsAlgorithm/Algorithm2/inc/CPcsKeyMap.h
changeset 0 e686773b3f54
child 12 5072fb0f5b46
child 21 b3431bff8c19
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/predictivesearch/PcsAlgorithm/Algorithm2/inc/CPcsKeyMap.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,183 @@
+/*
+* Copyright (c) 2006-2007 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:  Class to hold the character to key mappings
+*
+*/
+
+#ifndef __CPCS_KEY_MAP_ALGORITHM_2_H__
+#define __CPCS_KEY_MAP_ALGORITHM_2_H__
+
+// The macro is used for a hack which fix a problem of PtiEngine with Sonja keyboard.
+// The problem is that J/# key can't returned character code ('J', 'j', '#') 
+#define HACK_FOR_E72_J_KEY
+
+// INCLUDES
+#include <e32base.h>
+#include <PtiEngine.h>
+#include <PtiKeyMappings.h>
+#include <AvkonInternalCRKeys.h>
+#include <e32property.h>
+
+class CPcsAlgorithm2;
+class     CPtiEngine;
+
+class TKeyMappingData
+    {
+public:
+    TPtiKey key; // key
+    RArray<TInt> iKeyMappingArray; // All the characters mapped to the key
+    };
+
+// CLASS DECLARATION
+class CPcsKeyMap : public CBase
+    {
+
+public:
+
+    /**
+     * Two phase construction
+     */
+    static CPcsKeyMap* NewL(CPcsAlgorithm2* aAlgorithm);
+
+    /**
+     * Destructor
+     */
+    virtual ~CPcsKeyMap();
+
+    /**
+     * Converts the alphanumeric string to numeric string
+     */
+    void GetNumericKeyString(const TDesC& alphaNumericStr, TDes& numericStr);
+
+    /**
+     * Returns the numeric key id corresponding to a specific character		                          
+     */
+    TInt KeyForCharacter(const TChar& aChar);
+
+    /**
+     * Returns ETrue if this language is supported
+     */
+    TBool IsLanguageSupportedL(const TUint32 aLanguage);
+
+    void ReconstructKeymapL();
+    /**
+     * Returns the pool Id for a key                               
+     */
+    TInt CPcsKeyMap::PoolIdForCharacter(const TChar& aChar);
+    /**
+     * Returns total number of pools                                
+     */
+    TInt PoolCount();
+
+private:
+
+    /**
+     * Constructor
+     */
+    CPcsKeyMap();
+
+    /**
+     * Second phase constructor
+     */
+    void ConstructL(CPcsAlgorithm2* aAlgorithm);
+
+    /**
+     * Helper function to construct keyboard specific mappings
+     */
+    void ContructForItutKeyboardL(TLanguage aLanguage);
+    void ContructForHalfQwertyKeyboardL(TLanguage aLanguage);
+    void ContructFor4x10QwertyKeyboardL(TLanguage aLanguage);
+
+    /**
+     * Helper function to populate Itut key mappings
+     */
+    void AddKeyMapforItutL(TLanguage aLanguage);
+
+    void AddDataForItutKeyboardL(CPtiKeyMappings* aPtiKeyMappings,
+            TPtiKey aKey, TKeyMappingData& aKeyDataList);
+    /**
+     * Helper function to populate 4x10 Qwerty Keyboard  key mappings
+     */
+    void AddKeyMapfor4x10QwertyKeyboardL(TLanguage aLanguage);
+
+    void AddDataFor4x10QwertyKeyboardL(
+            CPtiQwertyKeyMappings* aPtiKeyMappings, TPtiKey aKey,
+            TKeyMappingData& aKeyDataList);
+    
+#ifdef HACK_FOR_E72_J_KEY
+    void AddDataFor4x10QwertyKeyboardE72HackL(); // Hack for E72 (J/# key)
+#endif  // HACK_FOR_E72_J_KEY
+    
+    /**
+     * Helper function to populate alfQwerty Keyboard key mappings
+     */
+    void AddKeyMapforHalfQwertyKeyboardL(TLanguage aLanguage);
+
+    void AddDataForHalfQwertyKeyboardL(CPtiHalfQwertyKeyMappings* aPtiKeyMappings,
+            TPtiKey aKey, TKeyMappingData& aKeyDataList);
+
+    void ResetKeyMap();
+    /**
+     * Function to construct key mappings for a particula language
+     * 
+     */
+    void ConstructKeymapL();
+    
+    /**
+     * Get the current keyboard type.
+     * @return current keyboard type.
+     */
+    TInt CurrentKeyBoardTypeL();
+    
+    /**
+     * 
+     * Construct keymap by type and language
+     * @ aKeyboardType, the current keyboard type.
+     * @ aLanguage, the keymap construct language.
+     */
+    void ConstructConcreteKeyMapL( TInt aKeyboardType, TLanguage aLanguage );
+    
+    /**
+     * 
+     * Add keymap for keyboard by type and language
+     * @ aKeyboardType, the current keyboard type.
+     * @ aLanguage, the keymap construct language.
+     */
+    void AddKeyMapforConcreteKeyboardL( TInt aKeyboardType, TLanguage aLanguage );
+
+private:
+    CPtiEngine* iPtiEngine;
+
+    CPcsAlgorithm2* iAlgorithm;
+    /**
+     * Array to hold the list of languages not supported
+     */
+    RArray<TLanguage> iLanguageNotSupported;
+
+    /**
+     * Flag to indicate if Phone is Chinese variant 
+     */
+    RArray<TPtiKey> iKeysForPoolFormation;
+
+    /**
+     * Contains all the keys and the characters mapped to each key
+     * own
+     */
+    RPointerArray<TKeyMappingData> iAllKeyMappingsPtrArr;
+    
+    };
+
+#endif // __CPCS_KEY_MAP_ALGORITHM_2_H__
+
+// End of file