textinput/peninputsplititut/inc/peninputsplititutwindow.h
branchRCL_3
changeset 44 ecbabf52600f
child 50 5a1685599b76
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputsplititut/inc/peninputsplititutwindow.h	Wed Sep 01 12:23:33 2010 +0100
@@ -0,0 +1,648 @@
+/*
+* 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:  drop-down list control
+*
+*/
+
+
+#ifndef C_SPLITITUTWINDOW_H
+#define C_SPLITITUTWINDOW_H
+
+#include <peninputlayout.h>
+#include <peninputpluginutils.h>
+#include <peninputinputcontextfield.h>
+#include <peninputlayoutmultilineicf.h>
+#include <peninputlayoutvkb.h>
+
+#include "peninputsplititutwindowmanager.h"
+#include "peninputsplititutpropertysubscriber.h"
+#include "peninputsplititutlayoutcontext.h"
+
+class CSplitItutDataMgr;
+class CFepCtrlDropdownList;
+class CAknFepCtrlCommonBgCtrl;
+class CPeninputSyncBitmapRotator;
+
+const TInt KUnavailableID = -1;
+
+/**
+ *  class CSplitItutWindow.
+ *
+ *  Split itu-t window class.
+ *
+ *  @lib peninputsplititut.lib
+ *  @since S60 v5.0
+ */
+class CSplitItutWindow : public CBase
+    {
+private:
+
+    enum TButtonType
+        {
+        ERawKeyButton,
+        ECommonButton,
+        ERepeatButtonEx
+        };
+    
+    enum TIndicatorAlign
+    	{
+    	EIndiAlignLeft,
+    	EIndiAlignCenter,
+    	EIndiAlignRight	
+    	};
+public:
+    /** 
+     * Symbian constructor.
+     *
+     * @since S60 5.0
+     * 
+     * @param aWindowMgr
+     * @param aLayoutOwner
+     * @param aDataMgr
+     * @return Pointer to created CSplitItutWindow object
+     */
+    static CSplitItutWindow* NewL(CSplitItutWindowManager* aWindowMgr, 
+                                    CSplitItutUiLayout* aLayoutOwner,
+                                    CSplitItutDataMgr* aDataMgr);
+
+    /** 
+     * tandard c++ destructor.
+     *
+     * @since S60 5.0
+     * @return None
+     */
+    ~CSplitItutWindow();
+
+    
+    /**
+     * Get Icf pointer
+     *
+     * @since S60 v5.0
+     * @return CFepLayoutMultiLineIcf*
+     */
+    inline CFepLayoutMultiLineIcf* Icf();
+    /** 
+     * get pen input type
+     *
+     * @since S60 5.0
+     * @return peninput type
+     */
+    TInt PenInputType(); 
+
+    /** 
+     * set property
+     *
+     * @since S60 5.0
+     * @param aPropertyName
+     * @param aPropertyValue
+     * @return peninput type
+     */
+    void SetPropertyL( MItutPropertySubscriber::TItutProperty aPropertyName, 
+                       const TDesC& aPropertyValue);
+
+    /** 
+     * handle size change
+     *
+     * @since S60 5.0
+     * @return TInt
+     */
+    TInt SizeChanged();
+
+    /** 
+     * get control
+     *
+     * @since S60 5.0
+     * @param aCtrlId
+     * @return return control pointer
+     */
+    CFepUiBaseCtrl* Control(const TInt aCtrlId);
+
+    /** 
+     * create chinese spec controls
+     *
+     * @since S60 5.0
+     * @return None
+     */
+    void CreateChineseSpecificCtrlsIfNeededL();
+    
+    /** 
+     * get itut keypad
+     *
+     * @since S60 5.0
+     * @return return itut keypad
+     */
+    inline CVirtualKeyboard* ItutKeypad();
+    
+    /** 
+     * construct itut keypad
+     *
+     * @since S60 5.0
+     * @param aResId
+     * @return None
+     */
+    void ConstructItutKeypadFromResourceL(TInt aResId);  
+    
+    /** 
+     * construct icf from resource
+     *
+     * @since S60 5.0
+     * @return None
+     */
+    void ConstructIcfFromResourceL();
+    
+    /** 
+     * handle skin change
+     *
+     * @since S60 5.0
+     * @return None
+     */
+    void OnSkinChange(); 
+    
+    /** 
+     * apply variant laf data
+     *
+     * @since S60 5.0
+     * @param aResolutionChange
+     * @return None
+     */
+    void ApplyVariantLafDataL(TBool aResolutionChange = EFalse);
+         
+    /** 
+     * apply spell variant laf data
+     *
+     * @since S60 5.0
+     * @return None
+     */         
+    void ApplyVariantLafDataForSpellL();     
+                        
+    /** 
+     * construct spell control
+     *
+     * @since S60 5.0
+     * @return None
+     */
+    void ConstructSpellCtrlFromResourceL();
+    
+    /** 
+     * set hard key
+     *
+     * @since S60 5.0
+     * @param aData
+     * @return None
+     */
+    void SetHardKeyOneSymbol(TUint8* aData);
+    
+    /** 
+     * set hard key
+     *
+     * @since S60 5.0
+     * @param aData
+     * @return None
+     */
+    void SetHardKeyOneSymbolL(TUint8* aData);
+    
+    /** 
+     * handle button res
+     *
+     * @since S60 5.0
+     * @param aControlId
+     * @return None
+     */
+    void HandleButtonResOnLangDirChange( TInt aControlId );
+    
+    /** 
+     * handle button res
+     *
+     * @since S60 5.0
+     * @param aControlId
+     * @return None
+     */
+    void HandleButtonResOnLangDirChangeL( TInt aControlId );
+
+    /** 
+     * Set prompt text
+     *
+     * @since S60 5.0
+     * @param aData text
+     * @return None
+     */
+    void SetPromptTextL( TUint8* aData );
+    
+    /** 
+     * Set bubble
+     *
+     * @since S60 5.0
+     * @return None
+     */    
+    void SetIndiBubble();
+    
+    /** 
+     * Update bubble prompt text
+     *
+     * @since S60 5.0
+     * @param aData text
+     * @return None
+     */
+    void UpdateIndiBubbleL( TUint8* aData );
+    
+    /** 
+     * Set bubble image
+     *
+     * @since S60 5.0
+     * @param aImgID1 image ID1
+     * @param aMaskID1 mask image id1
+     * @param aImgID2 image ID2
+     * @param aMaskID2 mask image id2
+     * @return None
+     */
+    void SetIndiBubbleImageL( const TInt aImgID1,
+						      const TInt aMaskID1,
+                              const TInt aImgID2,
+                              const TInt aMaskID2 );
+private:
+    /**
+     * C++ constructor
+     *
+     * @since S60 5.0
+     * @param aWindowMgr
+     * @param aLayoutOwner
+     * @param aDataMgr
+     * @return none
+     */
+    CSplitItutWindow(CSplitItutWindowManager* aWindowMgr, 
+                       CSplitItutUiLayout* aLayoutOwner,
+                       CSplitItutDataMgr* aDataMgr);
+                       
+    /**
+     * Symbian second-phase constructor
+     *
+     * @since S60 5.0
+     * @return none
+     */
+    void ConstructL(); 
+
+    /**
+     * create itut keypad
+     *
+     * @since S60 5.0
+     * @return none
+     */
+    void CreateItutKeypadL();
+
+    /**
+     * create layout icons
+     *
+     * @since S60 5.0
+     * @param aMajorSkinId
+     * @param aMinorSkinId
+     * @param aBmpFileName
+     * @param aBmpId
+     * @param aMaskBmpId
+     * @param aBmp
+     * @param aMaskBmp
+     * @param aSize
+     * @return none
+     */
+    void CreateLayoutIconL(TInt aMajorSkinId,
+                           TInt aMinorSkinId,
+                           const TDesC& aBmpFileName,
+                           TInt aBmpId,
+                           TInt aMaskBmpId,
+                           CFbsBitmap*& aBmp,
+                           CFbsBitmap*& aMaskBmp,
+                           TSize aSize);
+                           
+
+    /**
+     * create virtual keys
+     *
+     * @since S60 5.0
+     * @param aReader
+     * @param aKeyRect
+     * @return return virtual key
+     */
+    CVirtualKey* CreateKeyL(TResourceReader& aReader,
+                            TRect aKeyRect);
+
+    /**
+     * create virtual keys
+     *
+     * @since S60 5.0
+     * @param aReader
+     * @param aKeyRect
+     * @return None
+     */
+    void ChangeVirtualKeyInfoL(TResourceReader& aReader,
+                              CVirtualKey* aKey);
+
+    /**
+     * create all buttons
+     *
+     * @since S60 5.0
+     * @return None
+     */
+    void CreateAllButtonL();
+    
+    /**
+     * create back ground control
+     *
+     * @since S60 5.0
+     * @param aReader
+     * @param aKeyRect
+     * @return None
+     */
+    void CreateBackGroundControlL();
+
+    /**
+     * create dropdown list
+     *
+     * @since S60 5.0
+     * @param aReader
+     * @param aKeyRect
+     * @return None
+     */
+    void CreateDropdownListL();
+
+    /**
+     * create virtual keys
+     *
+     * @since S60 5.0
+     * @param aCtrl
+     * @param aRectIdx
+     * @return None
+     */
+    void SetCtrlRect(CFepUiBaseCtrl* aCtrl, TInt aRectIdx, const TBool aOffset = EFalse);
+    
+    /**
+     * resize candidate list
+     *
+     * @since S60 5.0
+     * @param aList
+     * @param aLTPosIdx
+     * @param aExpandable
+     * @return None
+     */
+    void ResizeCandidateList( CFepCtrlDropdownList* aList, 
+                              TInt aLTPosIdx, 
+                              TBool aExpandable);
+    
+    /**
+     * Calculate frame rects
+     *
+     * @since S60 5.0
+     * @param aRect
+     * @param aOuterRect
+     * @param aInnerRect
+     * @return None
+     */
+	void CalculateFrameRects(const TRect aRect,
+							 TRect& aOuterRect, 
+						     TRect& aInnerRect);
+						     
+    /**
+     * create rawkey buttons
+     *
+     * @since S60 5.0
+     * @param aControlId
+     * @param aCommand
+     * @return raw key button
+     */
+    CAknFepCtrlCommonButton* CreateRawKeyButtonL( const TInt aControlId,
+                                                  const TInt aCommand);
+
+    /**
+     * get common button control
+     *
+     * @since S60 5.0
+     * @param aControlId
+     * @return common button control
+     */
+    CAknFepCtrlCommonButton* CommonButtonControl(const TInt aControlId);
+
+    /**
+     * create repeat buttons
+     *
+     * @since S60 5.0
+     * @param aControlId
+     * @param aCommand
+     * @return repeat button
+     */
+    CAknFepCtrlCommonButton* CreateRepeatButtonL( const TInt aControlId,
+                                                  const TInt aCommand);
+                                        
+    /**
+     * create common buttons
+     *
+     * @since S60 5.0
+     * @param aControlId
+     * @return common button
+     */
+    CAknFepCtrlCommonButton* CreateCommonButtonL(const TInt aControlId);
+                                        
+    /**
+     * create buttons
+     *
+     * @since S60 5.0
+     * @param aType
+     * @param aControlId
+     * @param aRectId
+     * @param aInnerRectId
+     * @param aResourceId
+     * @param aCommand
+     * @return button
+     */
+    CFepUiBaseCtrl* CreateButtonL(TButtonType aType,
+                                  const TInt aControlId,
+                                  const TInt aRectId,
+                                  const TInt aInnerRectId,
+                                  const TInt aResourceId,
+                                  const TInt aCommand = KUnavailableID);
+                                  
+    /**
+     * Create ICF for spell mode
+     *
+     * @since S60 5.0
+     * @return None
+     */
+    void CreateICFL();
+     
+    /**
+     * Check control size change
+     *
+     * @since S60 5.0
+     * @param aRect
+     * @param aControlId
+     * @param aInnerRect
+     * @param aIsReloadImages
+     * @return TBool
+     */
+    TBool ControlSizeChanged(const TInt aControlId, 
+                            const TInt aRect, 
+                            const TInt aInnerRect, 
+                            TBool aIsReloadImages);
+                                        
+    /**
+     * add control
+     *
+     * @since S60 5.0
+     * @param aControl
+     * @return None
+     */
+    void AddControlL(CFepUiBaseCtrl* aControl);
+    
+    /**
+     * is chinese mode
+     *
+     * @since S60 5.0
+     * @return TBool
+     */
+    TBool IsChineseMode();
+    
+    /**
+     * construct key image
+     *
+     * @since S60 5.0
+     * @param aKeyImageResID
+     * @return None
+     */
+    void ConstructKeyImageFromResourceL( TInt aKeyImageResID );
+  
+    /**
+     * construct key image
+     *
+     * @since S60 5.0
+     * @param aKey
+     * @param aMapData
+     * @return None
+     */
+    void SetUnicodesForHardKey1(CVirtualKey* aKey, const TDesC& aMapData);
+    
+    /**
+     * construct key image
+     *
+     * @since S60 5.0
+     * @param aKeyImageResID
+     * @return None
+     */
+    void SetUnicodesForHardKey1L(CVirtualKey* aKey, const TDesC& aMapData);
+    
+    /**
+     * Indicator rect
+     *
+     * @since S60 5.0
+     * @param aBoundRect
+     * @param aRealRect1
+     * @param aRealRect2
+     * @param aAlign
+     * @return None
+     */ 
+    void CalIndicatorRect( const TRect& aBoundRect,
+                           TRect& aRealRect1,
+                           TRect& aRealRect2,
+                           TIndicatorAlign aAlign );
+private:
+    /**
+     * ITUT keypad.
+     * own
+     */
+    CVirtualKeyboard* iStandardItutKp;
+
+    /**
+     * spell candidate list.
+     * own
+     */
+    CFepCtrlDropdownList* iSpellCandsList;
+    
+    /**
+     * candidate list.
+     * own
+     */
+    CFepCtrlDropdownList* iCandsList;
+    
+    /**
+     * Punc candidate list.
+     * own
+     */
+    CFepCtrlDropdownList* iPuncCandsList;
+
+    /**
+     * data manager.
+     * not own
+     */
+    CSplitItutDataMgr* iDataMgr;
+
+    /**
+     * init chinese control flag.
+     */
+    TBool iChnCtrlInited;   
+ 
+    /**
+     * layout owner.
+     * not own
+     */
+    CSplitItutUiLayout* iLayoutOwner;
+    
+    /**
+     * window manager
+     * not own
+     */
+    CSplitItutWindowManager* iWindowMgr;
+    
+    /**
+     * Background control
+     * Own
+     */
+    CAknFepCtrlCommonBgCtrl* iBackgroundCtrl;
+    
+    /**
+     * Spell candidate list
+     * Own
+     */
+    CFepInputContextField* iSpell;
+    
+    /**
+     * bitmap rotator
+     * Own
+     */
+	CPeninputSyncBitmapRotator* iBmpRotator;
+	
+    /**
+     * symbol data for chinese
+     */
+    TFepSymbolOfHardwareOne iSymbolData;
+    
+    TSize iIndicatorSize;
+    TSize iIndicatorTextSize;
+    TBool iImDimensionSet;
+    CFepLayoutMultiLineIcf* iICF;
+    };
+   
+// ---------------------------------------------------------------------------
+// CSplitItutWindow::ItutKeypad
+// ---------------------------------------------------------------------------
+//
+inline CVirtualKeyboard* CSplitItutWindow::ItutKeypad()
+    {
+    return iStandardItutKp;    
+    }
+  
+// ---------------------------------------------------------------------------
+// CSplitItutWindow::Icf
+// ---------------------------------------------------------------------------
+//
+inline CFepLayoutMultiLineIcf* CSplitItutWindow::Icf()
+    {
+    return iICF;   
+    }
+#endif //C_SPLITITUTWINDOW_H