diff -r fb3763350a08 -r 4d54b72983ae taskswitcher/teleportui/hgteleportapp/inc/hgteleportfastswaparea.h --- a/taskswitcher/teleportui/hgteleportapp/inc/hgteleportfastswaparea.h Fri Jan 22 09:35:14 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,459 +0,0 @@ -/* - * ============================================================================ - * Name : hgteleportfastswaparea.h - * Part of : Hg Teleport - * Description : Teleport Fast Swap area UI - * Version : %version: sa1spcx1#45 % - * - * Copyright © 2008 Nokia. All rights reserved. - * This material, including documentation and any related computer - * programs, is protected by copyright controlled by Nokia. All - * rights are reserved. Copying, including reproducing, storing, - * adapting or translating, any or all of this material requires the - * prior written consent of Nokia. This material also contains - * confidential information which may not be disclosed to others - * without the prior written consent of Nokia. - * ============================================================================ - * - */ - -//macro TASKSWITCHER_USE_CUSTOM_LAYOUT -#if !defined ( TASKSWITCHER_USE_CUSTOM_LAYOUT ) - //#define TASKSWITCHER_USE_CUSTOM_LAYOUT 1 -#endif - - -#ifndef HGTELEPORTFASTSWAPAREA_H -#define HGTELEPORTFASTSWAPAREA_H - -#include -#include -#include "hgteleportdevicestate.h" -#include "hgfswclientobserver.h" -#include "hgteleportfastswapgrid.h" -#include "hgteleporteventcontrolerobserver.h" - - -// FORWARD DECLARATIONS -class CHgFswClient; -class CHgFswEntry; -class CAknStylusPopUpMenu; -class CAknQueryDialog; -class CHgTeleportEventControler; -class MHgTeleportDataChangeObserver; - -#ifdef TASKSWITCHER_USE_CUSTOM_LAYOUT -const TInt KFswItemHeight = 250; -const TInt KFswItemWidth = 240; -const TInt KFswImageSize = 200; -const TInt KFswTextHeight = 20; -const TInt KFswBorderSize = 10; -const TInt KFswHeadingHeight = 50; -#endif - -/** - * Teleport Fast Swap area UI. - */ -class CHgTeleportFastSwapArea: public CCoeControl, - public MEikMenuObserver, - public MHgFswObserver, - public MEikListBoxObserver, - public MHgTeleportFastSwapGridObserver, - private MHgTeleportEventControlerObserver, - public MHgDeviceStateObserver, - public MHgTeleportFastSwapTimerObserver - { -public: - /** - * Two-phase constructor. - * - * @param aRect Area where fast swap info & list should draw itself. - * @param aParent Parent CoeControl. - */ - static CHgTeleportFastSwapArea* NewL( const TRect& aRect, - CCoeControl& aParent, CHgTeleportDeviceState& aDeviceState, - CHgTeleportEventControler& aEventHandler); - - /** - * @copydoc NewL - */ - static CHgTeleportFastSwapArea* NewLC( const TRect& aRect, - CCoeControl& aParent, CHgTeleportDeviceState& aDeviceState, - CHgTeleportEventControler& aEventHandler); - - /** - * Destructor. - */ - ~CHgTeleportFastSwapArea(); - - /** - * Called from appview when coming to foreground. - */ - void HandleSwitchToForegroundEvent(); - - /** - * Called from appview when going to background. - */ - void HandleSwitchToBackgroundEvent(); - - /** - * Called after construction to set up additional properties, - * like the control observer. - */ - void Setup( MCoeControlObserver& aControlObserver ); - - /** - * Saves the index of the currently selected (highlighted) item. - */ - void SaveSelectedIndex(); - - /** - * Restores the selection (highlight) position. - */ - void RestoreSelectedIndex(); - - // Functions to perform activate, close, close others operations. - // They are public so same functionality can be implemented in the - // Options menu (appui) for example. - - /** - * Index of highlighted item or KErrNotFound. - */ - TInt SelectedIndex() const; - - /** - * Brings the app corresponding to the item at given index into foreground. - */ - void SwitchToApp( TInt aIndex ); - - /** - * Sends close msg to given app. - * @param aIndex index - * @param aSuppressRendering content is not refreshed if ETrue - */ - void TryCloseAppL( TInt aIndex, TBool aSuppressRendering = EFalse ); - - /** - * Sends close msg to given app if user confirms the query. - */ - void TryCloseAppWithQueryL( TInt aIndex ); - - /** - * Tries to Close all applications that cn be closed - */ - void TryCloseAllL(); - - /** - * True if it is allowed to ask the given app to close. - * @param aIndex index - */ - TBool CanClose( TInt aIndex ) const; - - /** - * @param aSelectedItem item for which pop up is shown - * - * @return ETrue, when number of closable apps is >= 2 or there is at least - * one closable item and non closable item is selected. - * @return EFalse, when number of closable apps is < 2. - */ - TBool CanCloseAll( TInt aSelectedItem ) const; - - /** - * Returns the number of items in the list. - */ - TInt Count() const; - - /** - * Returns the underlying Ganes control pointer. - */ - CCoeControl* GetChildControl() { return iGrid; } - - /** - * Sets the data-changed observer. - */ - void SetDataChangeObserver( MHgTeleportDataChangeObserver* aDcObserver ); - - /* - * Handling short/long app key. - */ - void HandleAppKey(TInt aType); - -private: - - /** - * @copydoc NewL - */ - void ConstructL( const TRect& aRect ); - - /** - * C++ constructor. - */ - CHgTeleportFastSwapArea(CCoeControl& aParent, - CHgTeleportDeviceState& aDeviceState, - CHgTeleportEventControler& aEventHandler); - - // From MEikListBoxObserver - void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType); - -public: - /** - * Implements drag gesture handling - * @see MHgTeleportEventControlerObserver - */ - void MoveOffset(const TPoint&); - - /** - * Implements tap gesture handling - * @see MHgTeleportEventControlerObserver - */ - void TapL(const TPoint&); - - /** - * Implements long tap gesture handling - * @see MHgTeleportEventControlerObserver - */ - void LongTapL(const TPoint&); - - /** - * Implements drag gesture handling - * @see MHgTeleportEventControlerObserver - */ - void Drag(const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent); - - /** - * Implements animation stop handling - * @see MHgTeleportEventControlerObserver - */ - void Stop(); - - /** - * Implements view position getter. Returns point in the middle of the - * grid view window. - * - * @see MHgTeleportEventControlerObserver - */ - TPoint ViewPos()const; - -public: - // from CCoeControl - TInt CountComponentControls() const; - CCoeControl* ComponentControl(TInt aIndex) const; - void FocusChanged( TDrawNow aDrawNow ); - void SizeChanged(); - void Draw( const TRect& aRect ) const; - TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); - void HandlePointerEventL( const TPointerEvent& aPointerEvent ); - -private: - // From MHgFswObserver - void HandleFswContentChanged(); - - // From MEikMenuObserver - void ProcessCommandL( TInt aCommandId ); - void SetEmphasis( CCoeControl*, TBool ) { } - - // From MHgTeleportFastSwapGridObserver - void HandleCloseEventL(TInt aItemIdx); - - // From MHgDeviceStateObserver - void HandleDeviceStateChanged( TChangeType aChangeType ); - - // From MHgTeleportFastSwapTimerObserver - void TimerCompletedL( CHgTeleportFastSwapTimer* aSource ); - -// new functions - - /** - * Makes a copy of the given bitmap. - * Also scaled to the given size, but maintains aspect ratio, - * so the size of the returned bitmap may be less then aSize. - */ - CFbsBitmap* CopyBitmapL( TInt aFbsHandle, TSize aSize ); - - /** - * Called from HandleFswContentChanged. - */ - void HandleFswContentChangedL(); - - /** - * Shows the content from iArray on the screen. - */ - void RenderContentL(); - - /** - * Creates the ganes grid control. - */ - void ReCreateGridL(); - - /** - * Returns rectangles for fast swap area controls - */ - void GetFastSwapAreaRects( RArray& aRects ); - - /** - * Creates a stylus popup instance (iPopup) if not yet done. - */ - void PreCreatePopupL(); - - /** - * Shows the stylus popup menu if not yet visible. - * @param aIndex index of item in the grid - * @param aPoint position for the popup - */ - TBool ShowPopupL( TInt aIndex, const TPoint& aPoint ); - - /** - * Shows the app close confirmation query. - * @param aIndex index of item in the grid - * @return ETrue if accepted EFalse if canceled - */ - TBool ConfirmCloseL( TInt aIndex ); - - /** - * Sends the data-changed notification. - */ - void NotifyChange(); - - /** - * Chage application order. - * move Homescreen to first left position. - */ - void SwapApplicationOrder( RPointerArray& aArray ); - - /** - * Retrieves and returns size for image graphics. - */ - TSize PreferredImageSize(); - - /** - * Retrieves number of items in grid - */ - TInt GridItemCount(); - - /** - * Calculates the correct size if aspect ratio needs to be preserved. - */ - TSize CalculateSizePreserveRatio(const TSize& aTargetAreaSize, - const TSize& aSourceSize); - - /** - * Selects next item in grid - */ - void SelectNextItem(); - - /** - * Highlight current grid'd item and redraw - */ - void ShowHighlight(); - - /** - * Centralise most centered item so it was most exposed on the view. - * Centered element is being selected by grid. - * Animation to the centered element is made after aRedrawDelay time. - * - * @param aRedrawDelay - animation delay. - */ - void CenterItem( TInt aRedrawDelay); - - /** - * Returns full grid view size. - */ - TSize GridWorldSize(); - - /** - * Updates grid, called for manual grid scroll update - * - * @param aForceRedraw if set to ETrue - redraw will be forced - * @param aAnimate set to ETrue to enable animation - */ - void UpdateGrid( TBool aForceRedraw = EFalse, - TBool aAnimate = ETrue ); - - /** - * Returns grid view size - */ - TSize ViewSize(); - - /** - * Returns the position of the given item inside grid world rect. - * Returns point in the middle of the view rectangle. - * - * @param aItemIdx index of the item for which calculation will be done - */ - TPoint ItemViewPosition( TInt aItemIdx ); - - /** - * Returns index of the shown item, based on the logical - * position of the grids view. Item that is closest to the - * middle of screen is returned. - * - * @param aViewPos grids view position. This must be point in - * the middle of the view rectangle - * @return index of the item - */ - TInt ViewToVisibleItem( const TPoint aViewPos ); - - /** - * Launches increasing pop-up feedback. - */ - void LaunchPopupFeedback(); - -private: // Data - - // parent control - CCoeControl& iParent; - - // device state - // not own - CHgTeleportDeviceState& iDeviceState; - - // grid, own - CHgTeleportFastSwapGrid* iGrid; - - // fsw client, own - CHgFswClient* iFSClient; - // fsw content, ptrs owned - RPointerArray iArray; - - // index of selected (highlighted) item in the grid - // when the fsw was last focused - TInt iSavedSelectedIndex; - - // fsw popup (activate, close, etc.), own - CAknStylusPopUpMenu* iPopup; - // the aIndex argument of ShowPopupL is stored here - TInt iAppIndexForPopup; - - // query shown when pressing Clear key in fsw, own - CAknQueryDialog* iConfirmCloseQuery; - - // Timestamp of the last application close operation - TTime iTimeOfLastClose; - - // Observer ptr, may be NULL, not owned - MHgTeleportDataChangeObserver* iDcObserver; - - //Input events handler - CHgTeleportEventControler& iEvtHandler; - - TInt iMaxItemsOnScreen; - TInt iPreviousNoOfItems; - - // Tap event - TPointerEvent iTapEvent; - CHgTeleportFastSwapTimer* iHighlightTimer; - TBool iLongTap; - - // Grid scrolling - TInt iGridItemWidth; - - CHgTeleportFastSwapTimer* iRedrawTimer; // owned - - CHgTeleportFastSwapTimer* iUpdateGridTimer;//owned - - // Key event handling - TBool iConsumeEvent; - TBool iKeyEvent; - }; - -#endif // HGTELEPORTFASTSWAPAREA_H