diff -r 072a5fa0c63b -r c6bafb5162d8 voicerecorder/RecViewSrc/CVRRecViewContainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/voicerecorder/RecViewSrc/CVRRecViewContainer.h Wed Sep 01 12:29:14 2010 +0100 @@ -0,0 +1,315 @@ +/* +* Copyright (c) 2002-2006 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: +* A compound control class. It is responsible for owning CVRButtonPanel +* and CVRStateInfoPanel. It also handles the changing of softkeys, menubar +* and volume control. +* +*/ + + +#ifndef __CVRRECVIEWCONTAINER_H__ +#define __CVRRECVIEWCONTAINER_H__ + +// INCLUDES +#include +#include +#include "MVRObserver.h" +#include "MVRVolumeEventObserver.h" +#include + +// FORWARD DECLARATIONS +class CVRButtonPanel; +class CVRStateInfoPanel; +class MVRButtonPanelModel; +class MVRDecoratorModel; +class MVRStateInfoModel; +class MVRKeyObserver; +class MVRVolumeChangeObserver; +class MVRVolumeEventObserver; +class CVRRecView; +class CAknNavigationDecorator; +class CAknNavigationControlContainer; +class MAknsSkinInstance; +class CAknsBasicBackgroundControlContext; +class CVRRemConObserver; + + +// CLASS DEFINITION +/** +* A compound control class. It is responsible for owning CVRButtonPanel +* and CVRStateInfoPanel. It also handles the changing of softkeys, menubar, +* volume control and navipane. It also observers volume changes through +* MRemConCoreApiTargetObserver interface. +*/ +NONSHARABLE_CLASS( CVRRecViewContainer ) + : public CCoeControl, + public MVRObserver, + public MVRVolumeEventObserver, + public MCoeControlObserver + { + public: // Constructors and destructor + + /** + * Default constructor. + */ + CVRRecViewContainer(); + + /** + * Destructor + */ + ~CVRRecViewContainer(); + + /** + * 2nd phase constructor + * @param aRect The screen rectangle for this component + * @param aButtonModelPointer to a button panel observer (or NULL) + * @param aDecoratorModel Pointer to a decorator observer (or NULL) + * @param aStateInfoModel Pointer to a state info observer (or NULL) + * @param aOwningView Pointer to the view that owns us. + */ + void ConstructL( const TRect& aRect, + MVRButtonPanelModel* aButtonModel, + MVRDecoratorModel* aDecoratorModel, + MVRStateInfoModel* aStateInfoModel, + CVRRecView* aOwningView ); + + public: // from CCoeControl + + /** + * Specifies the help context for this form. + * @param aContext the context IDs are placed here + */ + void GetHelpContext( TCoeHelpContext& aContext ) const; + + public: + // from CCoeControl + + /** + * Called by the framework to get the number of sub-components + * contained in this component. + * @return The number of component controls contained by this control + */ + TInt CountComponentControls() const; + + /** + * Called by the framework to get a specified sub-component + * of this component. + * @param aIndex The index of the component to get. + * @return The component control with an index of aIndex. + */ + CCoeControl* ComponentControl( TInt aIndex ) const; + + /** + * When a key event occurs, the control framework calls this function + * for each control on the control stack, until one of them can process + * the key event (and returns EKeyWasConsumed). + * @param aKeyEvent The key event. + * @param aType The type of key event: EEventKey, EEventKeyUp + * or EEventKeyDown + * @return Indicates whether or not the key event was used by this + * control + */ + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, + TEventCode aType ); + + private: // from CCoeControl + + /* + * From CCoeControl + * @see CCoeControl + */ + void SizeChanged(); + + /** + * Draws this control. + * @param aRect The area that needs updating. Ignored. + */ + void Draw( const TRect& aRect ) const; + + /* + * From CCoeControl + * @see CCoeControl + */ + TTypeUid::Ptr MopSupplyObject(TTypeUid aId); + + /* + * From CCoeControl + * @see CCoeControl + */ + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + /** + *From MCoeControlObserver. To handle the volume events for touch UI. + */ + void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); + + + + public: // from MVRObserver + + /** + * Called to notify a change in the observed subject's state. + */ + void Update( TVRUpdateCommand aCommand = EVRUpdate ); + + public: // from MVRVolumeEventObserver + + /** + * Handles volume change event received from either side volume + * keys or left-right rocker presses. + * @param aKeyEvent The key event. Will be forwarded to CAknVolumeControl + * @param aType The type of key event: EEventKey, EEventKeyUp + * or EEventKeyDown. Will be forwarded to CAknVolumeControl + */ + + TInt HandleVolumeChangeL( const TKeyEvent& aKeyEvent, + TEventCode aType ); + + + public: // new methods + + /** + * Registers an observer for receiving + * key event notifications from this class. + * @param aObserver The observer object. + */ + void SetKeyObserver( MVRKeyObserver* aObserver ); + + /** + * Registers an observer for receiving + * audio volume change notifications from this class. + * @param aObserver The observer object. + */ + void SetVolumeChangeObserver( MVRVolumeChangeObserver* aObserver ); + + /** + * Updates the layout of all child controls to current active + * layout (Euro, Apac, Arabic/Hebrew) + */ + void UpdateLayoutL(); + + /** + * Handles a change to the application's resources + * @param aType The type of changed resource + */ + void HandleResourceChangeL( TInt aType ); + + /** + * Returns the currently focused button index in Button Panel + * @return The focused button index + */ + TInt FocusedButton() const; + + /** + * Gives the update command to Button Panel + * @param Update command + */ + void UpdateButtonPanel( TVRUpdateCommand aCommand ); + + + private: + + /** + * Tells the volume observer to update the volume + */ + void UpdateVolumeObserver(); + + /** + * Updates the navipane according to the current IHF setting + */ + void UpdateVolumeControlL(); + + /** + * Updates the CBA Buttons (LSK, RSK, MSK) + */ + void UpdateCBA(); + + private: // data + + /** + * The ihf volume control (in navi pane), + */ + CAknNavigationDecorator* iIhfVolumeControl; + + /** + * The ear piece volume control (in navi pane), + */ + CAknNavigationDecorator* iEarPieceVolumeControl; + + /** + * A pointer to the active volume control (ihf or ear piece) + */ + CAknNavigationDecorator* iActiveVolumeControl; + + /** + * Pointer to the navi pane, + * used as a short cut. Not owned. + */ + CAknNavigationControlContainer* iNaviPane; + + /** + * Pointer to the button panel component. Owned. + */ + CVRButtonPanel* iButtonPanel; + + /** + * Pointer to the state info panel component. Owned. + */ + CVRStateInfoPanel* iStateInfoPanel; + + /** + * Pointer to the view that owns us. Not owned. + */ + CVRRecView* iOwningView; + + /** + * Pointer to the decorator data model. Not owned. + */ + MVRDecoratorModel* iModel; + + /** + * Pointer to the key event observer (or NULL). Not owned. + */ + MVRKeyObserver* iKeyObserver; + + /** + * Pointer to the audio volume change observer (or NULL). Not owned. + */ + MVRVolumeChangeObserver* iVolumeChangeObserver; + + TRect iHorizontalLine; + TRect iVerticalLine; + + TAknLayoutRect iHorizontalLineRect; + TAknLayoutRect iVerticalLineRect; + TAknLayoutRect iButtonPanelRect; + + /** + * Skin instance from AknsUtils. Not owned. + */ + MAknsSkinInstance* iSkinInstance; + + /** + * Background context for clearing screen. Owned. + */ + CAknsBasicBackgroundControlContext* iBackgroundSkinContext; + + /** + * Notifier for side volume key events. Owned. + */ + CVRRemConObserver* iRemConObserver; + }; + +#endif // __CVRRECVIEWCONTAINER_H__