--- /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