classicui_plat/touch_pane_api/inc/AknTouchPane.h
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_plat/touch_pane_api/inc/AknTouchPane.h	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,319 @@
+/*
+* Copyright (c) 2005-2007 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:  File contains the concrete touch pane class.
+*
+*/
+
+
+
+#ifndef AKNTOUCHPANE_H
+#define AKNTOUCHPANE_H
+
+#include <coecntrl.h>
+#include <babitflags.h>
+#include <AknWsEventObserver.h>
+
+class CAknAppUi;
+class CAknButton;
+class MAknTouchPaneObserver;
+class CAknsBasicBackgroundControlContext;
+class CAknsFrameBackgroundControlContext;
+class MAknFepPenSupportInterface;
+class TAknTouchPaneItem;
+
+// have been deprecated
+
+/**
+*  CAknTouchPane.
+*
+*  @lib eikcoctl.lib
+*  @since S60 5.0
+*/
+NONSHARABLE_CLASS( CAknTouchPane  ) : public CCoeControl,
+                                      public MCoeControlObserver,
+                                      public MCoeControlBackground,
+                                      public MAknWsEventObserver
+    {
+
+public:
+
+    /** Touch pane visibility mode. */
+    enum TVisibilityMode
+        {
+        /** The visiblity is automatically updated whenever the visibility
+            or resource ID of status pane is changed. The touch pane is set
+            visible only when compatible status pane is visible. */
+        EAutomaticVisibilityChanges = 1,
+        /** The visibility is not automatically changed, and user can set
+            the visibility with @c MakeVisible() method. */
+        EManualVisibilityChanges = 2
+        };
+
+    /**
+    * Two-phased constructor.
+    */
+    IMPORT_C static CAknTouchPane* NewL();
+
+    /**
+     * Two-phased constructor. Construct the touch pane from the specified
+     * resource.
+     * @param aResourceId Resource ID specifying the resource.
+     */
+    IMPORT_C static CAknTouchPane* NewL( TInt aResourceId );
+
+    /**
+     * Destructor.
+     */
+    ~CAknTouchPane();
+
+    /**
+     * Reduces the given rectangle from the side that overlaps with
+     * touch pane.
+     * @param aBoundingRect Rectangle to be modified.
+     */
+    IMPORT_C void ReduceRect( TRect& aBoundingRect ) const;
+
+    /**
+     * Sets the touch pane's observer.
+     * @param aObserver Observer.
+     */
+    IMPORT_C void SetObserver( MAknTouchPaneObserver* aObserver );
+
+    /**
+     * Sets the visibility mode. By default, the automatic visibility changes
+     * are enabled, which means that the touch pane visibility is updated
+     * whenever the visibility or resource ID of status pane is changed.
+     * @param aMode Visibility mode.
+     */
+    IMPORT_C void SetVisibilityMode( TVisibilityMode aMode );
+
+    /**
+     * Allows input method activation. This method is called by the FEP to
+     * set the input method icon dimmed, when input method activation is
+     * not allowed, and to not dimmed, when input method activation is
+     * allowed.
+     * @param aValue ETrue to allow input method activation, EFalse to
+     *   disallow it.
+     */
+    IMPORT_C void AllowInputMethodActivation( TBool aValue );
+
+    /**
+     * Changes the state of the input method icon. This method is called by
+     * the FEP, when the touch input window is opened or closed. 
+     * @param aActivated ETrue to change the state of the icon to activated
+     *   (pressed down), EFalse to change it back to normal state.
+     */
+    IMPORT_C void SetInputMethodIconActivated( TBool aActivated );
+
+    /**
+     * Refreshes touch pane icons. This method is called by the framework,
+     * whenever application gains foreground or new application view is
+     * activated. Applications should call this, when touch pane has to
+     * change the state of some of its icons, for example, when the help
+     * context of application changes so that the dimming of help icon
+     * has to be switched.
+     */
+    IMPORT_C void RefreshL();
+
+    /**
+     * Sets the interface, which is used by the touch pane to activate
+     * and to deactivate input method window. Recurring calls will replace
+     * the previously used interface with the new one. The ownership of
+     * the interface is not transferred.
+     * @param aFepPenSupportInterface Interface to FEP, which can be used
+     *   to activate and deactivate input method window.
+     */
+    IMPORT_C void SetFepPenSupportInterface(
+        MAknFepPenSupportInterface* aFepPenSupportInterface );
+
+    /**
+     * Handles status pane size change.
+     * This method is called from status pane whenever it changes its size
+     * as a result of resource change or visibility change.
+     */
+    void HandleStatusPaneSizeChange( TInt aInitialResourceId,
+        TInt aLastRequestedResourceId );
+
+// from base classes
+
+    /**
+     * From CCoeControl. Returns number of controls inside the control.
+     * @return Number of component controls.
+     */
+    IMPORT_C TInt CountComponentControls() const;
+
+    /**
+     * From CCoeControl. Returns a control determined by control index.
+     * @param anIndex Index of a control to be returned.
+     * @return Pointer to control.
+     */
+    IMPORT_C CCoeControl* ComponentControl( TInt aIndex ) const;
+
+    /**
+     * From MCoeControlBackground. Draw the background for a given control.
+     * The method is intented to be called by the component controls fo touch
+     * pane to draw their backgrounds.
+     * @param aGc Graphics context used for drawing.
+     * @param aControl The control being drawn.
+     * @param aRect The area to be redrawn.
+     */
+    IMPORT_C void Draw( CWindowGc& aGc, const CCoeControl& aControl,
+        const TRect& aRect ) const;
+
+    /**
+     * From MCoeControlObserver. Handles an event from an observed control.
+     * @param aControl The control that sent the event.
+     * @param aEventType The event type.
+     */
+    IMPORT_C void HandleControlEventL( CCoeControl *aControl,
+        TCoeEvent aEventType );
+
+    /**
+     * From CCoeControl. Handles a change to the control's resources.
+     * @param aType A message UID value.
+     */
+    IMPORT_C void HandleResourceChange( TInt aType );
+
+    /**
+     * From CCoeControl. Sets the control visible or invisible.
+     * @param aVisible ETrue to make the control visible, EFalse to
+     *   to make control invisible.
+     */
+    IMPORT_C void MakeVisible( TBool aVisible );
+
+    /**
+     * From CCoeControl. Handles key events.
+     * @param aKeyEvent The key event.
+     * @param aType The type of key event.
+     * @return Indicates whether or not the key event was used by this
+     *    control.
+     */
+    IMPORT_C TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
+        TEventCode aType );
+
+    /**
+     * From MAknWsEventObserver. Handles window server events.
+     */
+    void HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination );
+
+protected:
+
+// from base classes
+
+    /**
+     * From CCoeControl. Handles pointer events.
+     */
+    IMPORT_C void HandlePointerEventL( const TPointerEvent &aPointerEvent );
+
+    /**
+     * From CCoeControl. Responds to changes in the position of a control. 
+     */
+    IMPORT_C void PositionChanged();
+
+    /**
+     * From CCoeControl. Sets the size and position of the components.
+     */
+    IMPORT_C void SizeChanged();
+
+private:
+
+    /**
+     * C++ default constructor.
+     */
+    CAknTouchPane();
+
+    /**
+     * Symbian 2nd phase constructor.
+     */
+    void ConstructL( RArray<TAknTouchPaneItem>& aItems );
+
+    // Activates application shell.
+    void ActivateApplicationShellL();
+    // Activates application swapper.
+    void ActivateFastSwapL() const;
+    // Activated idle view.
+    void ActivateIdleViewL() const;
+    // Rotates the screen.
+    void RotateScreenL() const;
+    // Activates/deactivates stylus input.
+    void ActivateStylusInputL( TBool aActivate ) const;
+    // Activates/deactivates popup toolbar.
+    void ActivateToolbarL( TBool aActivate ) const;
+    // Activates/deactivate help.
+    void ActivateHelpL( TBool aActivate );
+    // Activates/deactivates dialler.
+    void ActivateDiallerL( TBool aActivate );
+    // Activates/deactivates contacts.
+    void ActivateContactsL( TBool aActivate );
+
+    // Creates the specified touch pane component.
+    CAknButton* ConstructDefaultComponentL( TInt aId );
+    // Notifies the observer of a change in touch pane's size or position.
+    void ReportSizeChange() const;
+    // Sets the required properties for control to be touch pane's component. 
+    void SetDefaultPropertiesL( CCoeControl* aControl );
+    // Sets the size and position of touch pane's window from layout data.
+    void SetWindowLayout();
+    // Registers the positions of component controls.
+    void RegisterControlPositions() const;
+    // Removes the registered positions of component controls.
+    void DeregisterControlPositions() const;
+    // Updates buttons.
+    void DoRefresh();
+
+// from base classes
+    
+    /**
+     * From CCoeControl. Draws the control.
+     */
+    void Draw( const TRect& aRect ) const;
+
+private: // Data
+
+    CAknAppUi* iAppUi; // not owned
+
+    // Component controls
+    CAknButton* iShellIcon;
+    CAknButton* iSwapperIcon;
+    CAknButton* iIdleViewIcon;
+    CAknButton* iDiallerIcon;
+    CAknButton* iRotateIcon;
+    CAknButton* iHelpIcon;
+    CAknButton* iInputMethodIcon;
+    CAknButton* iToolbarIcon;
+    CAknButton* iContactsIcon;
+
+    // Touch pane's observer
+    MAknTouchPaneObserver* iObserver; // not owned
+
+    // Background control context
+    CAknsBasicBackgroundControlContext* iBgContext;
+
+    // Frame control context
+    CAknsFrameBackgroundControlContext* iFrameContext;
+
+    // Interface for activating/deactivating input method
+    MAknFepPenSupportInterface* iFepPenSupportInterface; // not owned
+
+    // UID of the application owning the touch pane
+    TUid iUid;
+
+    // Flags
+    TBitFlags32 iFlags;
+
+    };
+
+#endif // AKNTOUCHPANE_H  
+
+// End of File