diff -r 000000000000 -r eb1f2e154e89 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutrootctrl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutrootctrl.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,376 @@ +/* +* Copyright (c) 2005-2006 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: header file of control group and button group +* +*/ + +#ifndef C_CFEPUILAYOUTROOTCTRL_H +#define C_CFEPUILAYOUTROOTCTRL_H + +#include +#include +class CDragBar; +class CCoeControl; +class CFepUiCursor; +/** + * CFepUiLayoutRootCtrl + * + * Root control of the layout. It's a control group will consists of several controls. + * + * @lib feplayoutcontrol.lib + * @since S60 V4.0 + */ +NONSHARABLE_CLASS(CFepUiLayoutRootCtrl) : public CControlGroup, + public MEventObserver + { +public: + //constructor and destructor + /** + * Factory function. + * + * @since S60 V4.0 + * @param aUiLayout Ui layout who contains this control.Ownership not transferred + * @return An instance of CFepUiLayoutRootCtrl class + */ + static CFepUiLayoutRootCtrl* NewL(CFepUiLayout* aUiLayout); + + /** + * Destructor + * + * @since S60 V4.0 + */ + virtual ~ CFepUiLayoutRootCtrl(); + + /** + * HandleEventL. Handle UI event. + * There are only 4 kinds of UI event right now: Initialization, raw event, + * pointer and pointer buffer event. + * + * @since S60 v4.0 + * @param aType The event type. See TEventType + * @param aEventData The event data. + * @return The control which processes the event + */ + TBool HandleEventL(TEventType aType, const TAny* aEventData); + + + /** + * Set the control which has pointer down event + * + * @since S60 v4.0 + * @param aCtrl The control to be set. NULL if pointer up + * happens in other control, and this will cause a canceling pointer down operation + * in that control which has the pointer down event. + */ + void SetPointerDownCtrlL(CFepUiBaseCtrl* aCtrl); + + /** + * Register to layout to require updaing control valid region constantly. + * + * @since S60 v4.0 + * @param aCtrl The contrl which want to update region. + * @param aRequiredFlag Register or deregister. ETrue if register. + */ + IMPORT_C void RequireRegionUpdateL(CFepUiBaseCtrl* aCtrl,TBool aRequiredFlag); + + + /** + * Draw contents within the rect. + * + * @since S60 v4.0 + * @param aRect The rect to be drawn in. + * @param aDrawFrameFlag The flag which tells whether draw content of draw frame only + */ + void DrawRect(const TRect& aRect,TBool aDrawFrameFlag = EFalse); //internal use only + + /** + * AddControlL + + + /** + * RemoveControl + * Remove a control from layout. + * Remove a control after layout initialization is not supported right now + * + * @since S60 v4.0 + * @param aControl The control to be removed. + */ + void RemoveControl(CFepUiBaseCtrl* aControl); + + /** + * RemoveControl + * Remove a control from layout. + * Remove a control after layout initialization is not supported right now + * + * @since S60 v4.0 + * @param aControl The control to be removed. + */ + void RemoveControl(CCoeControl* aControl); + + /** + * Set layout's rectangle + * + * @since S60 V4.0 + * @param aRect The new control area + */ + void SetRect(const TRect& aRect); + + /** + * Init layout control + * Do layout control initialization. It's called by layout when layout + * is initialized. + * + * @since S60 v4.0 + * @return The layout rect. + */ + TRect InitControl(); + + /** + * Capture or release the pointer + * + * @since S60 v4.0 + * @param aControl The control who wants the operation. + * @param aFlag Flag indicates capture or release. ETure if capturing. + * @return The control which captures the pointer before. + */ + CFepUiBaseCtrl* CapturePointer(CFepUiBaseCtrl* aCtrl,TBool aFlag = ETrue); + + /** + * Get the control which captures the pointer + * + * @since S60 v4.0 + * @return The control which captures the pointer. + */ + inline CFepUiBaseCtrl* CtrlCapPointer(); + + /* + * Get the max editor length which the input context field can hold. + * Called by CFepUiLayout + * + * @since S60 v4.0 + * @return The editor length + */ + TInt GetInputContextFieldMaxLen(); + + /** + * 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 + * @param aHInfo The valid information in horizontal dirtection + * @return ETue if no confliction. Otherwise, EFalse + */ + TBool IsValidDestination(const TRect& aRect,CDragBar* aDragBar, + TBool& aVInfo,TBool& aHInfo); + + /** + * Draw control frame + * + * @since S60 V4.0 + * @param aFrameRect The rect to be drawn + * @param aDrawFlag Draw or erase flag. ETrue if draw + * @return The affected rect + */ + TRect DrawFrame(const TRect& aFrameRect, TBool aDrawFlag = ETrue); + + /** + * Get the region where user can't start the drawing. + * + * @since S60 V4.0 + * @return The region required + */ + inline const TRegion& NonHwrStartingPtRegion(); + + //from base class CFepUiBaseCtrl + /** + * From CFepUiBaseCtrl + * Draw control + * + * @since S60 V4.0 + */ + virtual void Draw(); + + /** + * From CFepUiBaseCtrl + * Update control's valid region when other control hiding or displaying. + * This is usually used for HWR window to change it's writing area. + * + * @since S60 V4.0 + * @param aCtrl The control whose displaying status changed + * @param bFlag ETrue if control is hiden, otherwise EFalse + */ + virtual void UpdateValidRegion(CFepUiBaseCtrl* aCtrl,TBool aRemoveFlag); + + //from base control MPositionObserver + /** + * From MPositionObserver + * Handle position change event + * + * @since S60 v4.0 + * @param aOffset The moving offset + * @return The flag whether this observer has processed the event. + * ETrue if processed.Otherwise EFalse. + */ + TBool HandlePositionChange(const TPoint& aOffset); + + + //from base class MEventObserver + /** + * From MEventObserver + * Handle control event + * + * @since S60 v4.0 + * @param aEventType The event type + * @param aCtrl The control who sends the event + * @param aEventData The event data + */ + void HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl, const TDesC& aEventData); + + /** + * From CFepUiBaseCtrl + * OnActivate. Called when the layout is going to be shown. + * + * @since S60 v4.0 + */ + IMPORT_C void OnActivate(); + + /** + * From CFepUiBaseCtrl + * OnDeActivate. Called when the layout is going to be hidden + * + * @since S60 v4.0 + */ + IMPORT_C void OnDeActivate(); + + CWindowToBitmapMappingGc* GetRWindowGcL(); + + /** + * Handle system resource change. + * + * @since S60 V5.0 + * @param aType The system resource change type + */ + void HandleResourceChange(TInt aType); + + /** + * Public for layout + * + * @since S60 V5.0 + */ + void GraphicDeviceSizeChanged(); + virtual void BringToTopInGroup(CFepUiBaseCtrl* aCtrl); + virtual void BringToBackInGroup(CFepUiBaseCtrl* aCtrl); + + CFepUiCursor* CreateCursor(); +protected: + /** + * 2nd phase constructor + * + * @since S60 v4.0 + */ + void ConstructL(); + +private: + /** + * Default constructor. + * + * @since S60 V4.0 + * @param aRect The rectangle area for this control + * @param aUiLayout Ui layout who contains this control + */ + CFepUiLayoutRootCtrl(CFepUiLayout* aUiLayout); + //from CFepUiBaseCtrl + /** + * From CFepUiBaseCtrl + * Handle pointer down event + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint); + + /** + * From CFepUiBaseCtrl + * Handle pointer move event + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint); + + /** + * From CFepUiBaseCtrl + * Handle pointer up event + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint); + + void DoRegionUpdateForCtrls(); + + void RegisterICFEditor(); + + void InsertToPopList(CFepUiBaseCtrl* aCtrl); + + CFepUiCursor* CreateCursorL(); + TBool ClipCursorForCtrlNeeded(CFepUiBaseCtrl* aCtrl, + const TBool aBringToTopFlag, + TInt& aCursorIndex); +private: + + /** + * Indicate whether the pointer down event should be canceled. + */ + TBool iPointerDownCanceled; + + TBool iShadowShown; + /** + * Control list for controls which require updating rect constantly + */ + RPointerArray iCtrlRegionAwareList; + + /** + * The control who has captured the pointer. + * Not own + */ + CFepUiBaseCtrl* iPointerCaptureCtrl; + + /** + * Layout position. To keep the position when layout moving + */ + TPoint iLayoutPos; + + + CFepUiCursor* iCursor; + + /** + * Control list for controls which require to be aware any overlapping change + * due to other controls show/hide. + */ + RPointerArray iCtrlOverlappingAwareList; + + CWindowToBitmapMappingGc* iWindowGc; + }; + +#include "peninputlayoutrootctrl.inl" +//end of classd CFepUiLayoutRootCtrl + +#endif //C_CFEPUILAYOUTROOTCTRL_H \ No newline at end of file