diff -r 2f5c9ee7098c -r 072a5fa0c63b voicerecorder/RecViewSrc/CVRButtonPanel.h --- a/voicerecorder/RecViewSrc/CVRButtonPanel.h Thu Aug 19 09:57:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,294 +0,0 @@ -/* -* 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 drawing and updating -* a set of buttons. Button selections are also handled and forwarded -* as commands to the AppUi. -* -*/ - - -#ifndef __CVRBUTTONPANEL_H__ -#define __CVRBUTTONPANEL_H__ - -// INCLUDES -#include -#include -#include // MCoeControlObserver - -#include "MVRObserver.h" - -// FORWARD DECLARATIONS -class MVRButtonPanelModel; -class MAknsSkinInstance; -class CApaMaskedBitmap; -class TAknsItemID; -class CAknButton; - -// CLASS DEFINITION -/** -* A compound control class. It is responsible for drawing and updating -* a set of buttons. Button selections are also handled and forwarded -* as commands to the AppUi. -*/ -NONSHARABLE_CLASS( CVRButtonPanel ) - : public CCoeControl, - public MVRObserver, - public MCoeControlObserver, - public MCoeControlBackground - { - public: // data types - enum TFocusChange - { - EFocusUp = -1, - EFocusDown = 1, - EFocusInvalid = 2 - }; - - // pointer event types used in VR - enum TLastPointerEventType - { - EVRButtonDownEvent, - EVRButtonDragOutsideEvent, - EVRButtonUpEvent - }; - - public: // constructors and destructor - - /** - * Constructor. - * @param aModel Pointer to the button panel model. - * Ownership is not transferred. - */ - CVRButtonPanel( MVRButtonPanelModel* aModel ); - - /** - * Constructor. - * @param aModel Pointer to the button panel model. - * @param aParentViewUid Uid of CVRRecView for fast swap - * Ownership is not transferred. - */ - CVRButtonPanel( MVRButtonPanelModel* aModel, TUid aParentViewUid ); - - /** - * Destructor - */ - virtual ~CVRButtonPanel(); - - /** - * 2nd phase constructor. - */ - void ConstructL(); - - private: // constructors - - /** - * Default constructor. Not implemented. - */ - CVRButtonPanel(); - - /** - * Creates control buttons from given resources - * @param aButtonsResourceId The resource used in buttons' construction. - */ - void CreateButtonsFromResourcesL( TInt aButtonsResourceId ); - - public: - - /** - * 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 ); - - public: // from CCoeControl - - /* - * From CCoeControl - * @see CCoeControl - */ - void SizeChanged(); - - /** - * 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 ); - - /** - * Gets called whenever a pointer event occurs. - * @param aPointerEvent The pointer event to handle. - */ - void HandlePointerEventL( const TPointerEvent& aPointerEvent ); - - public: // from MVRObserver - - /** - * Called to notify a change in the observed subject's state. - */ - void Update( TVRUpdateCommand aCommand ); - - public: // from MCoeControlObserver - - /** - * This function is called when a control for which this control is the observer - * calls CCoeControl::ReportEventL(). In VoiceRecorder button pointer events are - * handled here. - * @param aControl The control that sent the event. - * @param aEventType The event type. - */ - void HandleControlEventL(CCoeControl *aControl, TCoeEvent aEventType); - - private: // from MCoeControlBackground - - /* - * From MCoeControlBackground - * @see MCoeControlBackground - */ - void Draw(CWindowGc& aGc, const CCoeControl& aControl, const TRect& aRect) const; - - public: // new methods - - /* - * Checks which button is currently focused and returns the index - * value of that - * @return The index for the currently focused button - */ - TInt FocusedButton() const; - - private: // from CCoeControl - - /** - * Draws this control. - * @param aRect The area that needs updating. Ignored. - */ - void Draw( const TRect& aRect ) const; - - /** - * 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; - - private: // new methods - - /** - * Moves focus to the next non-dimmed button. - * @param aDirection EFocusDown to move downwards, EFocusUp upwards - */ - void MoveFocus( const TFocusChange aDirection, TBool aDrawNow ); - - /** - * Updates buttons by changing their state - */ - void UpdateButtons(); - - /** - * Draws highlight rectangle for the focused button. - * @param aGc Current Graphic Context in use. - */ - void DrawFocus( CWindowGc& aGc ) const; - - /** - * Creates and starts a CPeriodic timer object - * with a resolution of KVRFastForwUpdateDelay - */ - void StartTimerL(); - - /** - * Stops and deletes the timer object. - */ - void StopTimer(); - - /** - * Called by the CPeriodic timer to handle a tick. - * Uses HandleTimerCallBack() to do the actual work. - * @param aButtonPanel Always a valid pointer to CVRButtonPanel object - * @return ETrue to indicate that the timer should continue. - */ - static TInt TimerCallBack( TAny* aButtonPanel ); - - /** - * Non-static variant of TimerCallBack (more convinient to implement). - */ - void HandleTimerCallBack(); - - /** - * Search corresponding command of the focused/pressed button and - * sends it to active view - */ - void FetchAndSendCommandL(); - - /** - * Handles special cases concerning button focus - */ - void TuneButtonFocus(); - - - private: // data - - /** - * Pointer to the button panel model. Not owned. - */ - MVRButtonPanelModel* iModel; - - /** - * The index of the currently focused button. - */ - TInt iFocusedButton; - - // Skin instance. Not owned. - MAknsSkinInstance* iSkin; - - // Uid of the parent view - TUid iParentViewUid; - - /** - * Pointer to the timer object. Owned. - */ - CPeriodic* iTimer; - - // Button panel's button controls. Owned. - CArrayPtrFlat< CAknButton > iVRButtons; - - /** - * Tells what pointer event is the last that has happened - */ - TLastPointerEventType iLastPointerEvent; - - }; - -#endif // __CVRBUTTONPANEL_H__