--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputgenericvkb/inc/peninputgenericvkbwindow.h Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,611 @@
+/*
+* 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: peninput generic vkb window layout class
+*
+*/
+
+
+#ifndef C_PENINPUTGENERICVKBWINDOW_H
+#define C_PENINPUTGENERICVKBWINDOW_H
+
+// System includes
+#include <peninputlayoutwindowext.h>
+#include <peninputuistatemgrinterface.h>
+#include <AknLayoutDef.h>
+
+// Forward declarations
+class CAknFepCtrlRangeBar;
+class CAknFepCtrlEventButton;
+class CAknFepCtrlDragButton;
+class CAknFepCtrlRepeatButton;
+class CPeninputCommonChoiceList;
+class CPeninputLayoutInputmodelChoice;
+class CPeninputGenericVkbLafMgr;
+class CPeninputSyncBitmapRotator;
+class CRepository;
+class CFepLayoutScrollableList;
+// Constants
+const TInt KMaxFileLength = 80;
+
+/**
+ * Vkb layout window class
+ * This class define methods to deal with window layout and
+ * handle events sent to this window
+ *
+ * @lib peninputgenericvkb.lib
+ * @since S60 v3.2
+ */
+class CPeninputGenericVkbWindow : public CPeninputLayoutWindowExt
+ {
+
+public:
+
+ /**
+ * Two-phased constructor
+ *
+ * @since S60 v3.2
+ * @param aUiLayout The plugin ui layout
+ * @param aLayoutContext The vkb layout context
+ * @return The pointer to CPeninputGenericVkbWindow object
+ */
+ static CPeninputGenericVkbWindow* NewL( CFepUiLayout* aUiLayout,
+ MPeninputLayoutContext* aLayoutContext, MPeninputUiStateMgr* aUiStateMgr );
+
+ /**
+ * Destructor
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ virtual ~CPeninputGenericVkbWindow();
+
+ /**
+ * Do when case changed
+ *
+ * @since S60 v3.2
+ * @param aNewCase The new case
+ * @return None
+ */
+ void DoCaseChange( TInt aNewCase );
+
+// From base class CPeninputLayoutWindow
+
+ /**
+ * From CPeninputLayoutWindow
+ * Handle control event
+ *
+ * @since S60 v3.2
+ * @param aEventType The event type
+ * @param aCtrl The control who sends the event
+ * @param aEventData The event data
+ * @return None
+ */
+ void HandleControlEvent( TInt aEventType,
+ CFepUiBaseCtrl* aCtrl,
+ const TDesC& aEventData );
+
+ /**
+ * From CPeninputLayoutWindow
+ * Get id of window config resource
+ *
+ * @since S60 v3.2
+ * @return The id of window config resource
+ */
+ TInt GetWindowConfigResId();
+
+ /**
+ * From CPeninputLayoutWindow
+ * Get id of window resource
+ *
+ * @since S60 v3.2
+ * @return The id of window resource
+ */
+ TInt GetWindowResId();
+
+ /**
+ * From CPeninputLayoutWindowExt
+ * Get resource id of numeric keymapping
+ *
+ * @since S60 v3.2
+ * @return The id of window resource
+ */
+ TInt GetNumKeymappingResId();
+
+ /**
+ * From CPeninputLayoutWindow
+ * Get file name of window config resource
+ *
+ * @since S60 v3.2
+ * @param aLangID The id of language
+ * @return The file name of window config resource
+ */
+ const TDesC& GetWindowConfigResFileName( TInt aLangID );
+
+ /**
+ * From CPeninputLayoutWindow
+ * Get file name of window resource
+ *
+ * @since S60 v3.2
+ * @return The file name of window resource
+ */
+ const TDesC& GetWindowResFileName();
+
+ /**
+ * From CPeninputLayoutWindow
+ * Re-organize all controls in the assigned client area layout
+ *
+ * @since S60 v3.2
+ * @param aClientLayoutId The id of client area layout
+ * @return None
+ */
+ void ReorganizeControls( TInt aClientLayoutId, TBool aNeedReset );
+
+ /**
+ * From CPeninputLayoutWindow
+ * Change unit size
+ *
+ * @since S60 v3.2
+ * @return The window rect
+ */
+ const TRect ChangeUnitSize();
+
+ /**
+ * From CPeninputLayoutWindow
+ * Change size of client area
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ void ChangeClientSize();
+
+ /**
+ * From CPeninputLayoutWindow
+ * Construct all controls specified in resource
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ void CreateAllControlsL();
+
+ /**
+ * From CPeninputLayoutWindow
+ * Set control fonts. Fonts info comes from resource
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ void SetControlsFont();
+
+ /**
+ * From CPeninputLayoutWindow
+ * Pop up choice list
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ void PopupChoiceList();
+
+ /**
+ * ConstructFromResourceL load settings from resource.
+ * Before calling this function, the resource id should be set
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ void ConstructFromResourceL();
+
+ static TInt BackgroundTaskL(TAny* aPtr);
+
+ /**
+ * config unit size, reason may due to client layout id changed,
+ * Set current language
+ *
+ * @since S60 v3.2
+ * @param aLang Current language
+ * @return None
+ */
+ void SetSwitchlistLanguage(TInt aLang);
+
+ /**
+ * Current editor is secret
+ *
+ * @since S60 v3.2
+ * @param aSecret Editor is secret
+ * @return None
+ */
+ void SetSwitchlistSecretFlag(TBool aSecret);
+
+ /**
+ * Dim the arrow keys on FSQ when the editor
+ * is findpane or secret editor
+ *
+ * @since S60 v3.2
+ * @param aSecret Editor is secret
+ * @return None
+ */
+ void DimArrowKeys( TBool aDimArrow );
+
+
+ /**
+ * Pop up switcher windows
+ *
+ * @since S60 v3.2
+ * @param aSecret Editor is secret
+ * @return None
+ */
+ void PopupSwitchWindowL();
+
+ /**
+ * Handle accented char event
+ *
+ * @since S60 v3.2
+ * @param aEventType The event type
+ * @param aEventData The event data
+ * @param aDeadKey The DeadKey char buffer
+ * @param anewCharBuf The new Accented buffer
+ * @return None
+ */
+ TBool HandleAccentCharEvent(TInt aEventType,
+ const TDesC& aEventData,
+ const TDesC& aDeadKey,
+ HBufC* anewCharBuf );
+
+ /**
+ * Handle virtual key latched event
+ *
+ * @since S60 v3.2
+ * @param aEventType The event type
+ * @param aCtrl The controler
+ * @param aEventData Event data
+ * @return None
+ */
+ void HandleVirtualKeyLatchedEvent(TInt aEventType,
+ CFepUiBaseCtrl* aCtrl,
+ const TDesC& aEventData );
+
+
+ /**
+ * handle virtual key up event
+ *
+ * @since S60 v3.2
+ * @param aEventType The event type
+ * @param aCtrl The controler
+ * @param aEventData Event data
+ * @return None
+ */
+ TBool HandleVirtualKeyUpEvent(TInt aEventType,
+ CFepUiBaseCtrl* aCtrl,
+ const TDesC& aEventData );
+
+ virtual void SetLafLayOut(TInt aRows, TInt aColumns);
+ /*
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ void SetDeadKey();
+ void ChangeInputModeL();
+
+ /**
+ * Unlatch a DeadKey by the key buffer
+ *
+ * @since S60 v3.2
+ * @param abuf The key buffer which will be unlatched
+ * @return None
+ */
+ void UnLatchDeadKey( const TDesC& abuf = KNullDesC );
+
+ void SetPromptTextL(TUint8* aData);
+
+ void UpdateLafData();
+
+ void ConstructAccentListL(TInt aLang);
+
+ void ShowBubble(TInt aShow);
+
+ /**
+ * Show tooltip of ICF
+ *
+ * @param aText The text to be displayed in ICF
+ * @return None
+ */
+ void ShowTooltipL( const TDesC& aText );
+
+ /**
+ * Hide tooltip of ICF
+ *
+ * @return None
+ */
+ void HideTooltip();
+
+ /**
+ * Hide candidate list
+ *
+ * @return None
+ */
+ void HideCandidateList();
+
+ /**
+ * Show candidate list
+ *
+ * @param aItemArray, the contents to be shown
+ * @param aActiveIndex, the default index
+ * @return None
+ */
+ void ShowCandidateListL( const CDesCArray* aItemArray,
+ TInt aActiveIndex );
+
+ /**
+ * Handle candidate list selected events
+ *
+ * @param aCtrl, pointer of the candidate list on which events occur.
+ * @param, aEventData event data
+ * @return None
+ */
+ void HandleCandidateListSelectedL( CFepUiBaseCtrl* aCtrl, const TDesC& aEventData );
+
+protected:
+
+ /**
+ * Constructor
+ *
+ * @since S60 v3.2
+ * @param aUiLayout The plugin ui layout
+ * @param aLayoutContext The vkb layout context
+ * @return None
+ */
+ CPeninputGenericVkbWindow( CFepUiLayout* aUiLayout,
+ MPeninputLayoutContext* aLayoutContext,
+ MPeninputUiStateMgr* aUiStateMgr );
+ void ConstructL();
+
+ virtual TBool CreateCustomControlL( TInt16 aControlId, TInt32 aImageId );
+ virtual void AddCustomControlGroupL(CFepUiBaseCtrl* aCtrl);
+
+private:
+ /**
+ * Add range bar into client area
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ void AddRangeBarL();
+
+ /**
+ * Add button to client area
+ *
+ * @since S60 v3.2
+ * @param aControlId The control id
+ * @param aEventId The control's event id
+ * @param aResId The control's resource id
+ * @param aUnicode The control's unicode
+ * @param aIsRepeat The TBool indicating whether the
+ * control is repeated or not
+ * @return The pointer to CAknFepCtrlEventButton object
+ */
+ CAknFepCtrlEventButton* AddButtonL( const TInt aControlId,
+ const TInt aEventId,
+ const TInt aResId,
+ const TInt aUnicode = 0,
+ const TBool aIsRepeat = EFalse );
+
+ /**
+ * Add popup window to display accented char list
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ void AddPopupWindowL();
+
+ /**
+ * Reset accent button
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ void ResetAccentButton();
+
+ /**
+ * Handle size changed for accented chars popup window
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ void PopupWindowSizeChange();
+
+ /**
+ * get resource info of accented chars popup window
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ void GetPopupWndInfoFromResL( TResourceReader reader, const TRect& aRect );
+ void DoIdleConstructL();
+
+ void SetVkbLayoutSize();
+
+ void SimulateRawEvent(TInt aScanCode, TRawEvent::TType aType);
+
+ void SetRangeBarSizeL(TInt x, TInt y);
+
+ TBool HandleDeadKeyL(TInt aEventType, const TDesC& aEventData );
+
+ void ReorgnizeTitleBar();
+
+ void UpdateICFTextL();
+
+ inline TBool IsRtoLLanguage( TInt aLanguage );
+ inline TBool IsValidLanguage(TInt aLanguage);
+
+ void HandleButtonResOnLangDirChange( TInt aControlId );
+ void HandleButtonResOnLangDirChangeL( TInt aControlId );
+
+ /*
+ * Create a candidate list control
+ */
+ void CreateCandidateListL();
+
+ /*
+ * Retrieve text color from skin for candidiate list
+ */
+ TRgb CandidateListTextColor();
+
+ /*
+ * Retrieve text color from skin for autocompletion part
+ */
+ TRgb AutoCompletionPartColor();
+
+private: // Data
+
+ /**
+ * The vkb extenting control for vkb area
+ * Not own
+ */
+ CPeninputVkbCtrlExt* iVkbCtrl;
+
+ /**
+ * The range bar
+ * Not own
+ */
+ CAknFepCtrlRangeBar* iRangeBar;
+
+ /**
+ * The language switch button
+ * Not own
+ */
+ CAknFepCtrlEventButton* iLangSwitchBtn;
+
+ /**
+ * The resource file name
+ */
+ TBuf<KMaxFileLength> iResourceFilename;
+
+ /**
+ * The popup window
+ * Own
+ */
+ CPeninputCommonChoiceList* iPopupWnd;
+
+ /**
+ * The background bitmap of popup window
+ * Not own
+ */
+ CFbsBitmap* iPopupWndBgImg;
+
+ /**
+ * The focus bitmap of popup window
+ * Not own
+ */
+ CFbsBitmap* iPopupWndFocusImg;
+
+ /**
+ * The UI state manager
+ * Not own
+ */
+ MPeninputUiStateMgr* iUiStateMgr;
+
+ /**
+ * Application window rect
+ */
+ TRect iAppWndRect;
+
+ /**
+ * VKB window rect
+ */
+ TRect iVkbWndRect;
+
+ CIdle *iIdle;
+
+ /**
+ * Whether popup window has been initied
+ */
+ TBool iPopupInited;
+
+ /**
+ * Popup window item rect
+ */
+ TRect iPopupItemRect;
+
+ /**
+ * Choice text layout
+ */
+ TAknTextLineLayout iChoiceTextLayout;
+
+ /**
+ * Whether popup window text property has been set
+ */
+ TBool iPopupSet;
+
+ /**
+ * Array of unit size
+ * Own
+ */
+ RArray<TSize> iUnits;
+ /**
+ * Touch input switcher
+ * Own
+ */
+ CAknFepCtrlRepeatButton* iArrowLeftButton;
+
+ CAknFepCtrlRepeatButton* iArrowRightButton;
+
+ CAknFepCtrlDragButton* iMoveButton;
+
+ CPeninputGenericVkbLafMgr* iLafMgr;
+
+// CPeninputLayoutInputmodelChoice* iModeSwitchChoice;
+
+ /**
+ * The new DeadKey buffer
+ */
+ TBuf<16> iNewDeadKeyBuf;
+
+ /**
+ * The old DeadKey buffer
+ */
+ TBuf<16> iOldDeadKeyBuf;
+
+
+ TAknWindowLineLayout iBubbleSize;
+ TAknTextLineLayout iBubbleTextLayout;
+ TBool iFirstConstruct;
+
+ /**
+ * Writing language
+ */
+ TInt iLanguage;
+
+ /**
+ * Bitmap rotator
+ */
+ CPeninputSyncBitmapRotator* iBmpRotator;
+
+private:
+ CFepLayoutScrollableList* iCandidateList;
+
+ };
+
+inline TBool CPeninputGenericVkbWindow::IsRtoLLanguage( TInt aLanguage )
+ {
+ return ( aLanguage == ELangArabic ||
+ aLanguage == ELangHebrew ||
+ aLanguage == ELangFarsi ||
+ aLanguage == ELangUrdu );
+ }
+
+inline TBool CPeninputGenericVkbWindow::IsValidLanguage(TInt aLanguage)
+ {
+ return (aLanguage != ELangTest && aLanguage != ELangNone);
+ }
+#endif // C_PENINPUTGENERICVKBWINDOW_H