diff -r 000000000000 -r eb1f2e154e89 textinput/peninputgenericvkb/inc/peninputgenericvkbwindow.h --- /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 +#include +#include + +// 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 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 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