fep/aknfep/inc/AknFepHashKeyManager.h
changeset 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fep/aknfep/inc/AknFepHashKeyManager.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,195 @@
+/*
+* Copyright (c) 2002 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:           
+*
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+#ifndef _AKNFEP_HASHKEY_MANAGER_H__
+#define _AKNFEP_HASHKEY_MANAGER_H__
+
+#include <e32base.h>
+#include <coedef.h>
+#include <frmtlay.h>
+
+#include "AknFepGlobalEnums.h"
+
+class CAknFepManager;
+class CAknFepCaseManager;
+enum TKeyResponse;
+enum TKeyPressLength;
+
+class CAknFepHashKeyManager : public CBase
+    {
+public:
+    enum THashKeyStyle
+        {
+        EHashKeyStyleWestern,
+        EHashKeyStyleChineseWithWestern,
+        EHashKeyStyleJapanese,
+        EHashKeyStyleKoreanWithWestern
+        };
+
+public:
+    static CAknFepHashKeyManager* NewL(CAknFepManager& aFepMan, CAknFepCaseManager* aCaseMan);
+    ~CAknFepHashKeyManager();
+    TKeyResponse HandleKeyEventL(TKeyPressLength aLength); 
+    void SetMode(TInt aMode, TBool aWesternPredictive);
+
+    /**
+    * Changes the hash key functionality.
+    */
+    void SetHashKeyStyle(THashKeyStyle aHashKeyStyle);
+
+    /**
+    * Cancels the hash key timer.
+    */
+    void CancelHashKeyTimer();
+    
+    inline void ClearSelectionModeHashKeyLoop();
+    
+	void SetPreviousSelectionStyleModeL();        
+	 /**
+     * To Handle the Indic Hash key Loop State
+     * 
+     * Set the New State or Mode based on the editor after Fep is configured from Editor
+     * @since 3.2
+     * @return nothing
+     */ 	 
+	void ResetIndicHashKeyStateL();     
+
+     /**
+     * Reset the flag of previous selection
+     *
+     * @since 3.2
+     * @return nothing
+     */
+    void ResetPreviousSelectionStyleMode();
+#ifdef RD_HINDI_PHONETIC_INPUT
+   	 /**
+     * To Handle SetIndicStateL method
+     * 
+     * helps in handling case changes
+     * @since 5.0
+     * @return nothing
+     */ 	   
+    void HandleSetIndicStateL();
+#endif
+
+private:
+    CAknFepHashKeyManager(CAknFepManager& aFepMan, CAknFepCaseManager* aCaseMan);
+    void ConstructL();
+    static TInt HashKeyTimerTimeoutCallback(TAny* aObj);
+    void HashKeyTimerTimeout();
+	TKeyResponse HandleKeyWesternSelectionStyleL(TKeyPressLength aLength);    
+	void SetSelectionStyleModeL();
+	 /**
+     * To Handle Indic Hash key Loop
+     * 
+     * Set the New State or Mode based on the existing mode
+     * @since 3.2
+     * @return EKeyWasConsumed
+     */  
+	TKeyResponse SetIndicStateL();
+	
+	 /**
+     * To Handle Indic Hash key Loop
+     * 
+     * Change back to the Previous State or Mode 
+     * @since 3.2
+     * @return EKeyWasConsumed
+     */  
+	TKeyResponse SetIndicPreviousStateL(); 
+	
+	 /**
+     * To Handle Indic Hash key Loop
+     * 
+     * To verify if Indic hash key Loop is required.
+     * @since 3.2
+     * @return ETrue if Shared Interface input Language is Indic and given editor is not Latin-Only
+     */ 
+	TBool IsIndicHashKeyStyleRequired();
+ 
+
+	/**
+     * To Handle Indic Hash key Loop
+     * 
+     * Set the Style for the State 
+     * @since 3.2
+     * @return nothing
+     */ 
+	void SetIndicSelectionStateL();
+	
+
+	/**
+     * To Handle Indic Hash key Loop
+     * 
+     * Update the case information
+     * @since 3.2
+     * @return nothing
+     */ 
+	void UpdateCaseForIndicHashLoop();
+
+    /**
+    * Reverts predictive text setting change. This method can be used
+    * if short key press of hash key changed predictive text
+    * setting in non-case supported languages and actually long key press
+    * action was handled. Not used with Chinese languages.
+    */
+    void RevertPredictiveTextSettingChangeL();
+
+    TKeyResponse HandleKeyWesternL(TKeyPressLength aLength);
+    TKeyResponse HandleKeyWesternWithChineseL(TKeyPressLength aLength);
+    TKeyResponse HandleKeyJapaneseL(TKeyPressLength aLength);
+    TKeyResponse HandleLongKeypressJapaneseL();
+    TKeyResponse HandleSortKeypressJapaneseL();
+    TKeyResponse HandleKeyWesternWithKoreanL(TKeyPressLength aLength);
+
+private:
+    THashKeyStyle iHashKeyStyle;
+    TInt iMode;
+    TBool iLastModeNumber;
+
+    CPeriodic* iHashKeyTimer; //owned
+    
+    CAknFepManager& iFepMan; //not owned
+    CAknFepCaseManager* iCaseMan;
+    TBool iWesternPredictive;
+    
+    TInt iSelectionLoopIndex;
+    TInt iIndicSelectionLoopIndex;
+    TUint8 const * iSelectionLoop;
+    TBool iLanguageChangedOrChangeFromNumberMode;
+    TBool iIndicPredictiveState;
+    TCursorSelection iPreviousIndicCursorPosition;
+    TBool iPreviousSelection;       // used by Japanese
+    };
+
+inline void CAknFepHashKeyManager::ClearSelectionModeHashKeyLoop()
+	{
+	iSelectionLoop = NULL;
+	iSelectionLoopIndex	= 0;
+	}
+
+#endif //_AKNFEP_HASHKEY_MANAGER_H__