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