taskswitcher/teleportui/hgteleportapp/inc/hgteleportappview.h
changeset 2 08c6ee43b396
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/teleportui/hgteleportapp/inc/hgteleportappview.h	Mon Jan 18 20:10:36 2010 +0200
@@ -0,0 +1,250 @@
+/*
+ * ============================================================================
+ *  Name        : hgteleportappview.h
+ *  Part of     : Hg Teleport
+ *  Description : appui
+ *  Version     : %version: sa1spcx1#32 %
+ *
+ *  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.
+ * ============================================================================
+ *
+ */
+
+#ifndef HGTELEPORTAPPVIEW_H
+#define HGTELEPORTAPPVIEW_H
+
+#include <e32base.h> 
+#include <coecntrl.h>
+#include <AknPopupFader.h>
+#include "hgteleportdevicestate.h"
+#include "hgteleportdatachangeobserver.h"
+#include "hgteleporteventcontrolerobserver.h"
+
+// FORWARD DECLARATIONS
+class CAknsFrameBackgroundControlContext;
+class CHgTeleportFastSwapArea;
+class CHgTeleportDialog;
+class CAknPopupHeadingPane;
+class CHgTeleportEventControler;
+
+/**
+ * Teleport applicatio view class.
+ */
+class CHgTeleportAppView : public CCoeControl, public MCoeControlObserver,
+        public MHgDeviceStateObserver,
+        public MAknFadedComponent,
+        public MHgTeleportDataChangeObserver,
+        public MHgTeleportEventControlerObserver
+    {
+public:
+
+    /**
+     * Two-phase constructor.
+     * 
+     * @param aRect Area where view should draw itself.
+     */
+    static CHgTeleportAppView* NewL(const TRect& aRect,
+            CHgTeleportDeviceState& aDeviceState);
+
+    /**
+     * @copydoc NewL
+     */
+    static CHgTeleportAppView* NewLC(const TRect& aRect,
+            CHgTeleportDeviceState& aDeviceState);
+
+    /**
+     * Destructor.
+     */
+    ~CHgTeleportAppView();
+
+    /**
+     * Called from appui if the app came to foreground.
+     */
+    void HandleSwitchToForegroundEvent();
+    
+    /**
+     * Called from appui if the app went to background.
+     */
+    void HandleSwitchToBackgroundEvent();
+
+    /**
+     * From CCoeControl      Method handling the pointer events while the fsw is used.
+     *
+     * @param aPointerEvent  Information about the event.
+     */
+    void HandlePointerEventL( const TPointerEvent &aPointerEvent );
+
+public:
+    // from CCoeControl
+    void Draw( const TRect& aRect ) const;
+    TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+    TInt CountComponentControls() const;
+    CCoeControl* ComponentControl(TInt aIndex) const;
+    void SizeChanged();
+    
+    //Own
+    /*
+     * Forward app key handling to fasswaparea control.
+     */
+    void HandleAppKey(TInt aType);
+
+protected:
+    // from MCoeControlObserver
+    void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
+
+    // from MHgDeviceStateObserver
+    void HandleDeviceStateChanged( TChangeType aChangeType );
+
+protected: // from MAknFadedComponent
+    TInt CountFadedComponents();
+    CCoeControl* FadedComponent( TInt aIndex );
+
+protected: // from MHgCenrepChangeObserver
+    void CenrepChanged( TUint32 aKey, TInt aNewValue );
+
+protected: // from MHgTeleportDataChangeObserver
+    void DataChanged( CCoeControl* aWhere, TInt aNewCount );
+
+private:
+
+    /**
+     * @copydoc NewL
+     */
+    void ConstructL( const TRect& aRect );
+
+    /**
+     * C++ constructor.
+     */
+    CHgTeleportAppView( CHgTeleportDeviceState& aDeviceState );
+
+    /**
+     * Updates the internal state for currently focused control.
+     * @param   aNewFocusedControl  ptr to new focused control, ownership not taken
+     */    
+    void ChangeFocus( CCoeControl* aNewFocusedControl );
+    
+    /**
+     * Creates components.
+     */
+    void CreateControlsL();
+    
+    /**
+     * Appends component rects to the given array.
+     * @param   aRects  array
+     */
+    void GetRects( RArray<TRect>& aRects );
+    
+    /**
+     * Adds the ptr to the list of dialog pointers.
+     * @param   aDlg    dialog ptr, ownership not taken
+     */
+    void AddDlgSelfPtrL( CHgTeleportDialog* aDlg );
+    
+    /**
+     * Handles key event according to the portrait-style (vertical) layout.
+     */
+    TKeyResponse OfferKeyEventPortraitStyleL( const TKeyEvent& aKeyEvent, TEventCode aType);
+
+    /**
+     * Calculates and returns the following:
+     *   - the rectangle for main_tport_pane
+     *   - the outer rectangle for the frame
+     *   - the inner rectangle for the frame
+     */
+    void UpdatePopupRects(  );
+
+    /**
+     * Updates the text in the applications and suggestions heading panes.
+     */
+    void UpdateHeadingsL();
+    
+    /**
+     * Disables transition animations for teleport app.
+     * (the automatic effects that are applied when coming/leaving foreground)
+     */
+    void DisableAppSwitchEffects();
+    
+    
+public://From MHgTeleportEventControlerObserver
+    /**
+     * Declare drag gesture handling.
+     * @param aOffset - drag distance
+     */
+    virtual void MoveOffset(const TPoint& aOffset);
+    
+    /**
+     * Declare tap gesture handling.
+     * @param aPoint - tap position
+     */
+    virtual void TapL(const TPoint& aPoint);
+    
+    /**
+     * Declare long tap gesture handling.
+     * @param aPoint - tap position
+     */
+    virtual void LongTapL(const TPoint& aPoint);
+    
+    /**
+     * 
+     */
+    virtual void Drag(
+        const AknTouchGestureFw::MAknTouchGestureFwDragEvent& aEvent);
+    
+    /**
+     * Declare animation stop handling
+     */
+    virtual void Stop();
+    
+    /**
+     * Declare getter for view position
+     */
+    virtual TPoint ViewPos() const;
+        
+private: // Data
+
+    // Ref to container for commonly used instances
+    CHgTeleportDeviceState& iDeviceState;
+
+    // Background context, owned
+    CAknsFrameBackgroundControlContext* iBgContext;
+    
+    // Fast Swap area, owned
+    CHgTeleportFastSwapArea* iFastSwapArea;
+
+    /**
+     * Heading pane, own
+     */
+    CAknPopupHeadingPane* iAppsHeading;
+
+    /**
+     * Currently focused control, not own
+     */
+    CCoeControl* iFocused;
+    
+    /**
+     * Rectangle of the control.
+     */
+    TRect iViewRect;
+    
+    /**
+     * Popup fader instance.
+     */
+    TAknPopupFader iPopupFader;
+    
+    /**
+     * Pointer for background image, owned
+     */
+    TRect iBgContextOuterRect;
+    TRect iBgContextInnerRect;
+    CHgTeleportEventControler* iEvtHandler; //own
+    };
+
+#endif // HGTELEPORTAPPVIEW_H