diff -r ebd48d2de13c -r ecbabf52600f textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h --- a/textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h Tue Aug 31 15:31:50 2010 +0300 +++ b/textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h Wed Sep 01 12:23:33 2010 +0100 @@ -18,8 +18,48 @@ #define __PEN_UI_WINDOW_CONTROL__ #include +#include +#include +#include + +#ifndef FIX_FOR_NGA +#define FIX_FOR_NGA +#endif + class RAknUiServer; class CPenUiWndCtrl; +class CPenUiHwnWnd; + +struct TCommonBgCtrlSubItem + { + TRect iRect; + TAknsItemID iFrameID; + TAknsItemID iCenterID; + TBool iIsShow; + }; +class CPenUiWndCtrl; + +class CCursorWindow : public CCoeControl + { +public: // Functions from base classes. + + CCursorWindow(CPenUiWndCtrl* aParent); + //void ConstructL(CCoeControl* aParent); + /** + * From CCoeControl + * Function where control's drawing is done. + * + * @param aRect Control's area. + */ + void Draw( const TRect &aRect ) const; + + void SetCursorVisible(TBool aFlag); + +private: + TBool iCursorVisible; + CPenUiWndCtrl* iParent; + }; + class CPenUiPopWnd : public CCoeControl { public: // Constructors and destructor @@ -153,6 +193,54 @@ void DimPenUiForMenu(); TInt GetWndPriority(); void SetResourceChange(TBool aResourceChange); + void UpdateCursor(TBool aOnFlag,const CFbsBitmap* aCursorBmp,const TRect& aPos); + void SetPopupArea(const TRect& aRect, TBool aFlag); + void UpdateICFArea(const CFbsBitmap* aBmp,const TPoint& aPos); + + /** + * Update the bubble area list + * + * @since S60 v5.0 + * @param aCtrl the Ctrl's address + * @param aBmp the bubble bitmap's address + * @param aRect the bubble rect + * @param aFlag ETrue means add bubble area and + * EFalse means remove bubble area + * @return void + */ + void UpdateChangedArea( const TUint32 aCtrl, + const CFbsBitmap* aBmp, const TRect& aRect, TBool aFlag ); + + /** + * Update the bubble area list + * + * @since S60 v5.0 + * @param aCtrl the Ctrl's address + * @param aBmp the bubble bitmap's address + * @param aMaskBmp the bubble mask bitmap's address + * @param aPos the bubble rect + * @param aFlag ETrue means add bubble area and + * EFalse means remove bubble area + * @return void + */ + void UpdateBubble( const TUint32 aCtrl, + const CFbsBitmap* aBmp, const CFbsBitmap* aMaskBmp, + const TRect& aPos, TBool aFlag ); + + void Clean(); + + void HandleNGASpecificSignal(TInt aEventType, const TDesC& aEventData); + void LiftUpPriority(); + + /** + * Update the cursor color + * + * @since S60 v5.0 + * @param none + * @return void + */ + void SetCursorColor(); + public: // Functions from base classes. /** @@ -163,6 +251,16 @@ */ void Draw( const TRect &aRect ) const; +public: + /** + * Auto refresh timer callback, refresh pen ui. (for NGA) + */ + void RefreshUI(); + +protected: + CCoeControl* ComponentControl(TInt) const; + TInt CountComponentControls() const; + private: /** @@ -197,6 +295,21 @@ */ TUid WindowGroupNameAppUidL( RWsSession& aWS,TInt aWGId ); + /** + * Restart auto refresh timer. (for NGA) + */ + void RestartRefreshTimer(); + + /** + * stop auto refresh timer. (for NGA) + */ + void StopRefreshTimer(); + + void DrawBkground(CWindowGc& aGc,const TRect& aRect) const; + void DrawFrame( CWindowGc& aGc,const TRect& aRect,TAknsItemID aFrameID,TAknsItemID aCenterID ) const; + + void DrawCursor(CWindowGc& aGc) const; + void DrawBubbleAsBackground(CFbsBitGc* aGc, CFbsBitmap* aBmp, const TRect& aRect); private: // Data RWindowGroup& iWndGroup; @@ -213,6 +326,7 @@ TInt iPriority; TInt iPreEditorPriority; + CAknIncallBubble* iIncallBubble; CPenUiPopWnd* iPopupWnd; TBool iShowPopup; @@ -221,6 +335,57 @@ //TBool iUiLayoutChange; TBool iInGlobalEditorState; TRect iLayoutClipRect; + + CFbsBitmap * iCursorBmp; + CFbsBitmap* iICFBmp; + CFbsBitmap* iChangedBmp; + RPointerArray iBubblesArea; + RPointerArray iBubblesMaskArea; + + /** + * An array of the Controls' addresses + */ + RArray iBubblesCtrl; + + RArray iBubblesPos; + + TPoint iCursorPos; + TPoint iIcfPos; + TPoint iChangedPos; + TRect iIcfRect; + TRect iCursorRect; + CIdle *iIdle; + TRect iRedrawRect; + TInt iTouchCount; + + TBool iCursorVisible; + + RRegion iPopRegion; + + TBool iBackground; + TAknsItemID iFrameID; + TAknsItemID iCenterID; + + /** + * Auto refresh timer + * own + */ + CPeriodic* iAutoRefreshTimer; + + /** + * The sub items of the background + */ + RArray *iSubItems; //not own + + TBool iNotUpdating; + CCursorWindow* iCursorWnd; + + /** + * The cursor's color + */ + TRgb iCursorColor; + +friend class CCursorWindow; }; class CInternalBkCtrl : public CCoeControl { @@ -260,4 +425,4 @@ RWindowGroup& iWndGroup; CFbsBitmap * iBitmap; }; -#endif \ No newline at end of file +#endif