textinput/peninputvkbcn/inc/peninputvkblayout.h
changeset 0 eb1f2e154e89
child 3 f5a1e66df979
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputvkbcn/inc/peninputvkblayout.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,474 @@
+/*
+* Copyright (c) 2002-2005 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:  vkb layout
+*
+*/
+
+
+#ifndef C_CAKNFEPVKBLAYOUT_H
+#define C_CAKNFEPVKBLAYOUT_H
+
+//  INCLUDES
+#include <aknfepglobalenums.h>
+#include <peninputlayout.h>
+#include <peninputlayoutplugininterface.h>
+#include "peninputvkblayoutcontext.h"
+#include "peninputcmdparam.h"
+
+/** class forward decalaration */
+class CAknFepVkbDataMgr;
+class CAknFepVkbUiStateMgr;
+class CAknFepVkbWindow;
+class CPtiEngine;
+
+/**
+ *  peninputvkbcn layout interface implemtation
+ *
+ *  @lib peninputvkbcn.lib
+ *  @since S60 v3.2
+ */
+class CAknFepVkbLayoutImp : public CFepUiLayoutInterface
+    {
+public:
+
+    /**
+     * Symbian constructor.
+     *
+     * @since S60 v3.2
+     * @param aInitParams Init data for layout
+     * @return Pointer to created CAknFepHwrBxLayoutImp object
+     */
+    static CAknFepVkbLayoutImp* NewL(TAny* aInitParams);
+
+
+    static CAknFepVkbLayoutImp* NewFsqL( TAny* aInitParams );
+
+    /**
+     * destructor.
+     *
+     * @since S60 v3.2
+     * @return None
+     */    
+    virtual ~CAknFepVkbLayoutImp();
+
+//from CFepUiLayoutInterface
+
+    /**
+     * From CFepUiLayoutInterface.
+     * Handle layout command event
+     *
+     * @since S60 v3.2
+     * @param aLayoutOwner The layout owner
+     * @param aData The data for creating layout
+     * @return Pointer to created CFepUiLayout object
+     */
+    CFepUiLayout* CreateFepUiLayoutL(MLayoutOwner* aLayoutOwner,const TAny* aData);
+
+private:
+
+    /**
+     * C++ default constructor
+     *
+     * @since S60 v3.2
+     * @return None
+     */          
+    CAknFepVkbLayoutImp();
+
+    /**
+     * Symbian second-phase constructor
+     *
+     * @since S60 v3.2
+     * @param aIsFsq Is Full screen qwert mode
+     * @return None
+     */          
+    void ConstructL( TBool aIsFsq );
+
+private:// data
+    TBool iIsFsq; 
+    };
+
+/**
+ *  peninputvkbcn layout
+ *
+ *  @lib peninputvkbcn.lib
+ *  @since S60 v3.2
+ */
+class CAknFepVkbLayout : public CFepUiLayout, 
+                         public MAknFepVkbLayoutContext
+    {
+    
+public:
+
+    /**
+     * Symbian constructor.
+     *
+     * @since S60 v3.2
+     * @param aInitData Init data for layout
+     * @return Pointer to created CAknFepHwrBxLayout object
+     */
+    static CAknFepVkbLayout* NewL(MLayoutOwner* aLayoutOwner, const TAny* aInitData, TBool aIsFsq);
+
+    /**
+     * destructor.
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    virtual ~CAknFepVkbLayout();
+
+    /**
+     * Get data manager.
+     *
+     * @since S60 v3.2
+     * @return  The data manager
+     */
+    CAknFepVkbDataMgr* DataMgr() const;
+
+    /**
+     * Get vkb window.
+     *
+     * @since S60 v3.2
+     * @return The vkb window
+     */
+    CAknFepVkbWindow* Window() const;
+    
+//from CFepUiLayout
+
+    /**
+     * From CFepUiLayout.
+     * Handle layout command event
+     *
+     * @since S60 v3.2
+     * @param aCmd Command Id.
+     * @param aData Data for command.
+     * @return Errors when return value small than 0.        
+     */
+    TInt HandleCommand(TInt aCmd, TUint8* aData);
+
+    /**
+     * From CFepUiLayout.
+     * Inform layout the size changing event
+     *
+     * @since S60 v3.2
+     * @param pData The event data.
+     * @return KErrNone if successfully size changing.        
+     */
+    TInt SizeChanged(const TAny* pData);
+
+    /**
+     * From CFepUiLayout.
+     * Handle the event from control
+     *
+     * @since S60 v3.2
+     * @param aEventType The event type
+     * @param aCtrl  The sender
+     * @param aEventData The event data.
+     * @return None                
+     */
+    void HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl, const TDesC& aEventData);
+
+    /**
+     * From CFepUiLayout.
+     * Handle editor text coming
+     * Called by animation dll when app editor text is coming.
+     * If a ui layout has a editor area, it must implements this function to get the text
+     *
+     * @since S60 v3.2
+     * @param aTotalTextLen The total editor text len
+     * @param aTextStartPos The position of the selection in whole editor text
+     * @param aCursolSel The cursor selection in the editor
+     * @param aText The text sent by fep.
+     * @return KErrNone is operation succeeded.
+     */
+    TInt OnAppEditorTextComing( const TFepInputContextFieldData& aData);
+                                  
+    /**
+     * From CFepUiLayout.
+     * Handle raw event key
+     *
+     * @since S60 v3.2
+     * @param aData the key raw event data
+     * @return ETrue if the key was handled, otherwise EFalse
+     */
+    TBool HandleRawKeyEventL(const TRawEvent& aKeyEvent);
+
+    /**
+     * From CFepUiLayout 
+     * Get the layout type, vkb or hwr. It's now similar to LayoutType which defines in 
+     * another interface.
+     * 
+     * @since S60 v3.2
+     * @return The layout type
+     */
+    TInt PenInputType();
+    
+    void SetPositionFromOutside(const TPoint& aNewPos);
+    
+    void HandleAppInfoChange(const TDesC& aInfo, 
+                             TPeninputAppInfo aType);
+
+//from MAknFepVkbLayoutContext
+
+
+    /**
+     * Send event to vkb window
+     *
+     * @since S60 v3.2
+     * @param aEventType The event type
+     * @param aCtrl  The sender
+     * @param aEventData The event data.
+     * @return None                
+     */
+    void SendEventToVkbControl(TInt aEventType, CFepUiBaseCtrl* aCtrl, 
+                               const TDesC& aEventData = KNullDesC);
+
+    /**
+     * Request data from data provider
+     *
+     * @since S60 v3.2
+     * @param aDataType The data request 
+     * @return The data you request
+     */
+    TInt RequestData(TAknFepDataType aDataType);
+
+    /**
+     * Get resource utils
+     *
+     * @since S60 v3.2
+     * @param aEventType Event type
+     * @param aData Event data
+     * @return The resource utils
+     */
+    void SetData(TAknFepDataType aDataType,TInt aData);
+
+    /**
+     * Sendkey to fep
+     *
+     * @since S60 v3.2
+     * @param aEventType Event type
+     * @param aEventData Event data
+     * @return None.
+     */
+    void Sendkey(TInt aEventType,const TDesC& aEventData = KNullDesC);
+
+    /**
+     * Force edit gain focus
+     *
+     * @since S60 v3.2
+     * @param aWhichEdit The control id which will get focus
+     * @return None.
+     */
+    void ForceEditGainFocus(TInt aWhichEdit);
+
+    /**
+     * Reset all status in layout
+     *
+     * @since S60 v3.2
+     * @return None.
+     */    
+    void Reset();
+
+    /**
+     * Get the length in composition field
+     *
+     * @since S60 v3.2
+     * @return The string length in composition field
+     */    
+    TInt CompositionFieldStringLength();
+
+    /**
+     * Get candidates
+     *
+     * @since S60 v3.2
+     * @param aInputString the input string sent to engine
+     * @param aIsPredictive The flag showing predictive or not
+     * @param aForNextPage Is this for next page candidate
+     * @return The canidates count
+     */
+    TInt GetCandidatesL(const TDesC& aInputString, 
+                        const TBool aIsPredictive,
+                        TBool aForNextPage = EFalse);
+
+    /**
+     * Clear trigger string
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    void ClearTriggerString();
+
+    /**
+     * Set current range
+     *
+     * @since S60 v3.2
+     * @param aRange The range need to set
+     * @param aNeedSave The flag need to save or not
+     * @return None.
+     */    
+    void SetCurrentRange(TInt aRange, TBool aNeedSave = EFalse, TBool aNotify = EFalse);
+    
+    /**
+     * SemiTransparencyRequired. Tell whether this layout require transparency.
+     * This is to save memory used in mask bitmap. If transparency not deeded,
+     * We use black-white bitmap.
+     *
+     * @since S60 v3.2
+     * @return ETrue if layout require transparency, otherwise EFalse.
+     */
+    TBool SemiTransparencyRequired();
+private:
+
+    /**
+     * C++ default constructor
+     *
+     * @since S60 v3.2
+     * @return None
+     */ 
+    CAknFepVkbLayout(MLayoutOwner* aLayoutOwner);
+
+    /**
+     * Symbian second-phase constructor
+     *
+     * @since S60 v3.2
+     * @param aInitData Init data of layout
+     * @return None
+     */   
+    void ConstructL(const TAny* aInitData, TBool aIsFsq);
+
+    /**
+     * Change input language
+     *
+     * @since S60 v3.2
+     * @param aLangID The language id you want to change to
+     * @return None
+     */   
+    void ChangeInputLanguage(TInt aLangID);
+
+    /**
+     * do when case change
+     *
+     * @since S60 v3.2
+     * @return None.
+     */
+	void DoCaseChange(TInt aCase);
+
+    /**
+     * Handle focus gained event
+     *
+     * @since S60 v3.2
+     * @param aCtrl  The sender
+     * @param aEventData The event data.  
+     * @return None
+     */       
+    void HandleFocusGained(CFepUiBaseCtrl* aCtrl, const TDesC& aEventData);
+
+    /**
+     * From CFepUiLayout.
+     * Test whether the position is valid. 
+     * This is used to test the target position when draging controls to some place
+     *
+     * @since S60 v4.0
+     * @param aRect The rect to be checked.
+     * @param aDragbar The dragbar being dragged
+     * @param aVInfo The valid information in vertial dirtection. ETrue is vertical
+     *        moving is valid.It's only used when aRect is not valid but moving in 
+     *        vertical direction is valid.
+     * @param aHInfo The valid information in horizontal dirtection. ETrue is 
+     *        horizontal moving is valid.It's only used when aRect is not 
+     *        valid but moving in vertical direction is valid.
+     * @param aFlag ETrue if whole layout is moving, otherwise, only components moving
+     * @return ETue if aRect is a valid position. Otherwise, EFalse. 
+     */       
+    TBool IsValidDestination(const TRect& aRect,
+                                                CDragBar* aDragBar,
+                                                TBool& aVInfo,TBool& aHInfo,
+                                                TBool aFlag);
+
+    void HandleMergedBtnClicked( TInt aCase );
+    
+    /**
+     * Handle show tooltip command
+     *
+     * @since S60 v5.0
+     * @param aData pointer is sent from FEP, point to a TPtrC
+     * @return None
+     */    
+    void HandleShowTooltipOnFSQCmdL( TUint8* aData );
+    
+    /**
+     * Handle show candidate list command
+     *
+     * @since S60 v5.0
+     * @param aData pointer is sent from FEP, point to a TPtrC
+     * @return None
+     */    
+    void HandleShowCandidateListOnFSQCmdL( TUint8* aData );
+
+    /**
+     * Read text stored in a block of memory into HBufC
+     *
+     * @since S60 v5.0
+     * @param aData aStartPtr the starting address of a block of memory with a 
+     *        string in it
+     * @param aLength The length of the string
+     * @return pointer of a HBufC storing the string in it
+     */ 
+    HBufC* ReadTextInfoHBufCL( const TUint16* aStartPtr, TInt aLength );    
+private: //data
+
+    TInt iLayoutType;  
+    /**
+     * The data manager
+     * Own
+     */
+    CAknFepVkbDataMgr* iDataMgr;
+    
+    /**
+     * The ui state manager
+     * Own
+     */    
+    CAknFepVkbUiStateMgr* iUiStateMgr;
+
+    /**
+     * The vkb window
+     * Own
+     */    
+    CAknFepVkbWindow* iVkbWindow;
+
+    /**
+     * The flag showing need to deal focus gained or not
+     * Own
+     */    
+    TBool iNeedDealFocusGained;
+
+    /**
+     * The vkb resource id
+     */    
+    TInt iResId;
+    
+    /**
+     * The ptiengine
+     * Not own
+     */    
+    CPtiEngine* iPtiEngine;
+    
+    /*
+    * Indicate if ITI is enabled.
+    */    
+    TBool iITIEnabled;	
+    };
+
+#endif // C_CAKNFEPVKBLAYOUT_H
+
+//End Of File