diff -r 000000000000 -r 2f259fa3e83a classicui_plat/touch_pane_api/inc/AknTouchPane.h --- /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 +#include +#include + +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& 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