fep/aknfep/inc/aknfepzhuyinkeyhandler.h
changeset 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fep/aknfep/inc/aknfepzhuyinkeyhandler.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,240 @@
+/*
+* Copyright (c) 2009 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 C_AKNFEPZHUYINKEYHANDLER_H
+#define C_AKNFEPZHUYINKEYHANDLER_H
+
+#include <e32base.h>	// For CActive, link against: euser.lib
+#include <e32std.h>		// For RTimer, link against: euser.lib
+#include <PtiDefs.h>
+#include "aknfepzhuyinkeyhandlerinterface.h"
+
+class ZhuyinKeyTable
+    {
+public:
+    /**
+     *  C++ constructor.
+     * 
+     * @return state.
+     */
+    ZhuyinKeyTable();
+
+    /**
+     *  Cancel and destroy
+     * 
+     * @return state.
+     */
+    ~ZhuyinKeyTable();
+    
+    /**
+     *  Get butten loop length.
+     * 
+     * @parameter aKey the input key.
+     * @return loop length.
+     */
+    static TInt GetBtLoopLength( TPtiKey aKey );
+    
+    /**
+     *  Get zhuyin symbol.
+     * 
+     * @parameter aKey the input key
+     * @parameter aClkCount input key count
+     * @parameter aOutput the zhuyin symbol
+     * @return state.
+     */
+    static TBool GetUnicode( TPtiKey aKey, TInt aClkCount, TDes& aOutput );
+    
+    };
+
+class CZhuyinKeyHandler : public CActive, public MZhuyinKeyHandler
+    {
+public:
+     
+    /**
+     *  Cancel and destroy
+     * 
+     * @return state.
+     */
+    ~CZhuyinKeyHandler();
+
+    /**
+     *  Two-phased constructor.
+     * 
+     * @return state.
+     */
+    static CZhuyinKeyHandler* NewL();
+
+    /**
+     *  Two-phased constructor.
+     * 
+     * @return state.
+     */
+    static CZhuyinKeyHandler* NewLC();
+
+public:
+
+    /**
+     * Function for making the initial request.
+     * 
+     * @return state.
+     */
+    void Start();
+    
+    /**
+     * Get Zhuyin symbol according to the input key.
+     * 
+     * @param aKey. the input key.
+     * @param aOutBuf. an output parameter which will receive the zhuyin symbol unicode.
+     * @return 0 identify the output should replace the old symbol.
+     *         1 identify the output is a new symbol.
+     *        -1 identify error
+     */
+    TInt GetZhuyinSymbol( TPtiKey aKey, TDes& aOutBuf );
+    
+    /**
+     * Reset all the member variables.
+     * @param None.
+     * @return None.
+     */
+    void Reset();
+    
+    /**
+     * Get tonemark according to symbol in front of cursor.
+     * 
+     * @param. aBaseSymbol is the symbol in front of cursor.
+     * @param. aOutBuf is the output buffer for rcving tonemark.
+     * @return. 0 identify the output should replace symbol in front of cursor
+     *          1 identify the output should be added.
+     *         -1 identify error
+     */
+    TInt GetToneMark( const TDes& aBaseSymbol, TDes& aOutBuf );
+    
+    /**
+     * Set whether state change from entry to spelling editing is automatical.
+     * 
+     * @param aState.1 for automatical, 0 for manual.
+     * @return None.
+     */
+    void SetState( TInt aState );
+    
+    /**
+     * Get state change states.
+     * 
+     * @return state.
+     */
+    TInt GetState();
+    
+    /**
+     * Set status change flag. 
+     * this function is used to deal with long press on Down key or Clear key.
+     * 
+     * @param aChgFlag.
+     * @return None.
+     */
+    void SetStatusChgFlag( TStatusChgFlag aChgFlag );
+    
+    /**
+     * Get the status change flag.
+     * @prama None.
+     * @return.
+     */
+    TStatusChgFlag GetStatusChgFlag();
+    
+private:
+    
+    /**
+     * C++ constructor.
+     * @prama None.
+     * @return.
+     */
+    CZhuyinKeyHandler();
+
+    /**
+     * Second-phase constructor.
+     * @prama None.
+     * @return.
+     */
+    void ConstructL();
+
+private:
+
+    /**
+     * From CActive Handle completion.
+     * @prama None.
+     * @return.
+     */
+    void RunL();
+
+    /**
+     * How to cancel me.
+     * @prama None.
+     * @return.
+     */
+    void DoCancel();
+
+    /**
+     * Override to handle leaves from RunL(). Default implementation causes.
+     * the active scheduler to panic.
+     * @prama None.
+     * @return.
+     */
+    TInt RunError( TInt aError );
+
+private:
+    
+    /**
+     * Provides async timing service
+     */
+    RTimer iTimer;
+    
+    /**
+     * Last pressed key.
+     */
+    TPtiKey iLastKey;
+    
+    /**
+     * if ETrue, it identify you don't touch any key in the specified time.
+     */
+    TBool iTimeOut;
+    /**
+     * the times you pressed current key.
+     */
+    TInt iBtClickNum;
+    
+    /**
+     * the max loop length for pressed key.
+     */
+    TInt iBtLoopLength;
+    
+    /**
+     * whether the state change from entry to spelling editing is automatical.
+     */
+    TInt iState;
+    
+    /**
+     * state change flag.used to handle long press on down key and clear key currently.
+     */
+    TStatusChgFlag iStatusChgFlag;
+    
+    };
+
+#endif // C_AKNFEPZHUYINKEYHANDLER_H
+
+// End of file
+