--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpxplugins/viewplugins/views/inc/mpxcommonplaybackviewcontainer.h Wed Sep 01 12:32:02 2010 +0100
@@ -0,0 +1,517 @@
+/*
+* Copyright (c) 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: MPX Common playback view's container implementation.
+*
+*/
+
+
+
+#ifndef CMPXCOMMONPLAYBACKVIEWCONTAINER_H
+#define CMPXCOMMONPLAYBACKVIEWCONTAINER_H
+
+
+// INCLUDES
+#include <coecntrl.h>
+#include <hwrmlight.h>
+
+#include "mpxcommonplaybackviewdefs.h"
+#include "mpxalbumartutilobserver.h"
+#include "mpxbutton.h"
+#include "mpxplaybackframeworkdefs.h"
+#include "mpxconstants.h"
+
+
+// FORWARD DECLARATIONS
+class MEikCommandObserver;
+class MAknsControlContext;
+class CAknIconArray;
+class CMPXPlaybackViewInfoLabel;
+class MMPXLayoutSwitchObserver;
+class CMPXCommonUiHelper;
+class CMPXButtonManager;
+class MMPXPlaybackViewLayout;
+
+// CLASS DECLARATION
+
+/**
+ * Container class for audio view.
+ *
+ * @lib mpxplaybackview.lib
+ * @since S60 v3.0
+ */
+class CMPXCommonPlaybackViewContainer : public CCoeControl,
+ public MMPXAlbumArtUtilObserver,
+ public MMPXButtonCmdObserver,
+ public MHWRMLightObserver
+ {
+public:
+
+ /**
+ * Symbian 2nd phase constructor.
+ *
+ * @param aRect Frame rectangle for container.
+ */
+ IMPORT_C virtual void ConstructL( const TRect& aRect );
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C virtual ~CMPXCommonPlaybackViewContainer();
+
+ /**
+ * Updates time indicators.
+ *
+ * @since S60 3.0
+ * @param aPlaybackPosInSeconds, New playback postions
+ * @param aTotalLengthInSeconds, Clips duration
+ */
+ IMPORT_C virtual void UpdateTimeIndicatorsL(
+ TInt aPlaybackPosInSeconds,
+ TInt aTotalLengthInSeconds );
+
+ /**
+ * Updates label
+ *
+ * @since S60 3.0
+ * @param aLabel Label which is updated
+ * @param aText New text value
+ */
+ IMPORT_C virtual void UpdateLabelL(
+ TMPXPbvTextIndicator aLabel,
+ const TDesC& aText );
+
+ /**
+ * Sets main pane mode.
+ *
+ * @since S60 3.0
+ * @param aMode Playback mode.
+ */
+ IMPORT_C virtual void SetMode( TMPXPbvPlaybackMode aMode );
+
+ /**
+ * Set random mode.
+ *
+ * @since S60 3.0
+ * @param aRandomMode ETrue if random is on.
+ */
+ IMPORT_C virtual void SetRandomMode( TBool aRandomMode );
+
+ /**
+ * Set repeat mode.
+ *
+ * @since S60 3.0
+ * @param aRepeatAll ETrue if repeat all is on.
+ * @param aRepeatOne ETrue if repeat one is on.
+ */
+ IMPORT_C virtual void SetRepeatMode(
+ TBool aRepeatAll,
+ TBool aRepeatOne );
+
+ /**
+ * Set Real Audio mode.
+ *
+ * @since S60 3.2
+ * @param aRealAudioMode ETrue if a Real Audio file is being played.
+ */
+ IMPORT_C virtual void SetRealAudioMode( TBool aRealAudioMode );
+
+ /**
+ * Update buttons according to current state.
+ *
+ * @since 3.0
+ */
+ IMPORT_C virtual void UpdateButtons( TMPXPlaybackState aState );
+
+ /**
+ * Set layout for all elements and set sizes for icons.
+ *
+ * @since S60 3.0
+ */
+ IMPORT_C virtual void UpdateLayout();
+
+ /**
+ * Updates duration label.
+ *
+ * @since S60 3.0
+ * @param aTotalLengthInSeconds, Clips duration
+ */
+ IMPORT_C virtual void UpdateDurationLabelL( TInt aTotalLengthInSeconds );
+
+ /**
+ * Force softkey label colors to what is specified in skin
+ * for Music Player soft keys.
+ *
+ * @since S60 3.0
+ */
+ IMPORT_C virtual void UpdateSoftkeyColors();
+
+ /**
+ * Handles foreground events
+ *
+ * @since S60 3.0
+ * @param aForeground ETrue if app is going to foreground, EFalse otherwise
+ */
+ IMPORT_C virtual void HandleForegroundEventL( TBool aForeground );
+
+// from base class MMPXAlbumArtUtilObserver
+
+ /**
+ * From MMPXAlbumArtUtilObserver.
+ * Notify that extraction of album art started.
+ */
+ IMPORT_C virtual void ExtractAlbumArtStarted();
+
+ /**
+ * From MMPXAlbumArtUtilObserver.
+ * Album art is extracted from file and ready to use.
+ *
+ * @param aBitmap a converted image. Ownership is transferred.
+ * @param aErr error code
+ */
+ IMPORT_C virtual void ExtractAlbumArtCompleted(
+ CFbsBitmap* aBitmap,
+ TInt aErr );
+
+// from base class CoeControl
+
+ /**
+ * From CoeControl.
+ * Handles key events.
+ *
+ * @param aKeyEvent The key event.
+ * @param aType The type of key event.
+ */
+ IMPORT_C virtual TKeyResponse OfferKeyEventL(
+ const TKeyEvent& aKeyEvent,
+ TEventCode aType );
+
+ /**
+ * From CoeControl.
+ * Handles a change to the control's resources.
+ *
+ * @param aType A message UID value.
+ */
+ IMPORT_C virtual void HandleResourceChange( TInt aType );
+
+ /**
+ * From CoeControl.
+ * Gets the control's help context.
+ *
+ * @param aContext The control's help context.
+ */
+ IMPORT_C virtual void GetHelpContext( TCoeHelpContext& aContext ) const;
+
+ /**
+ * Starts marquee for a playback label
+ *
+ * @param aLabel Label to start marquee
+ */
+ IMPORT_C virtual void StartMarquee( TMPXPbvTextIndicator aLabel );
+
+protected:
+
+
+
+
+
+
+ /**
+ * Creates labels.
+ */
+ IMPORT_C virtual void CreateLabelsL();
+
+ /**
+ * Creates icons.
+ * Any subclass which overrides this must call this base class method
+ * first or else the common icons will not be created.
+ */
+ IMPORT_C virtual void CreateIconsL();
+
+ /**
+ * Deletes all icon objects.
+ */
+ IMPORT_C void FreeIcons();
+
+ /**
+ * Draw an icon
+ *
+ * @since 3.0
+ * @param aGc Graphics context to draw to
+ * @param aDirtyRect Part of the screen that needs redrawing
+ * @param aIndicatorRect Position for the icon
+ * @param aIcon Icon and mask
+ * @param aInvertMask Invert mask (see CBitmapContext::BitBltMasked)
+ */
+ IMPORT_C virtual void DrawIndicator(
+ CWindowGc& aGc ,
+ const TRect& aDirtyRect,
+ const TRect& aIndicatorRect,
+ const CGulIcon* aIcon,
+ TBool aInvertMask = ETrue ) const;
+
+ /**
+ * Redraw part of the screen to the bitmap context.
+ *
+ * @param aRect Area to be redrawn.
+ *
+ */
+ IMPORT_C virtual void RedrawRect(
+ const TRect& aRect) const;
+
+ /**
+ * Update progress bar graphics based on current playback
+ * and download position.
+ */
+ IMPORT_C virtual void UpdateProgressBarGraphics();
+
+ /**
+ * Update progress bar graphics and redraw.
+ * Refresh happens only when backlight is ON and
+ * UI is in foreground.
+ * Note: Some display types may not need backlight. In that case
+ * code may need to be adjusted accordingly.
+ */
+ IMPORT_C virtual void RefreshProgressBar();
+
+ /**
+ * Update label text color according to skin
+ */
+ IMPORT_C virtual void UpdateLabelColorsL();
+
+ /**
+ * Update skin control context for background
+ *
+ * @param aRect Area to be updated.
+ */
+ IMPORT_C virtual void UpdateBackgroundSkinControlContext( const TRect& aRect );
+
+ /**
+ * Set FMTX mode.
+ *
+ * @since S60 3.2
+ * @param aFMTXMode ETrue if the view supports FMTX label.
+ */
+ IMPORT_C virtual void SetFMTXMode( TBool aFMTXMode );
+
+// from base class CoeControl
+
+ /**
+ * From CCoeControl.
+ * Responds to changes to the size and position of the contents of this
+ * control.
+ */
+ IMPORT_C virtual void SizeChanged();
+
+ /**
+ * From CCoeControl.
+ * Gets the number of controls contained in a compound control.
+ *
+ * @return The number of component controls contained by this control.
+ */
+ IMPORT_C virtual TInt CountComponentControls() const;
+
+ /**
+ * From CCoeControl.
+ * Gets an indexed component of a compound control.
+ *
+ * @param aIndex The index of the control.
+ * @return The component control with an index of aIndex.
+ */
+ IMPORT_C virtual CCoeControl* ComponentControl( TInt aIndex ) const;
+
+ /**
+ * From CCoeControl.
+ * Draws the control.
+ *
+ * @param aRect The rectangular region of the control to be drawn.
+ */
+ IMPORT_C virtual void Draw( const TRect& aRect ) const;
+
+// from base class MMPXButtonCmdObserver
+
+ /**
+ * From MMPXButtonCmdObserver
+ * Handle a button command.
+ * @param aCommand Command id, as specified in the button constructor.
+ */
+ IMPORT_C virtual void HandleButtonCommandL( TInt aCommand );
+
+ /**
+ * From CCoeControl.
+ * Handle events from the touch screen
+ * since 5.0
+ */
+ IMPORT_C virtual void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+
+public:
+
+ /**
+ * Gets song position (from touch progress bar)
+ * since 5.0
+ */
+ IMPORT_C virtual TInt GetNewSongPosition();
+
+ /**
+ * Sets song position (from currently playback position)
+ * since 5.0
+ */
+ void SetNewSongPosition( const TInt64& aPositon );
+
+ /**
+ * From MBacklightControlObserver.
+ * Callback for change in backlight status
+ *
+ * @param aTarget The target of light change event; keypad, screen or both
+ * @param aStatus New status of the target
+ */
+ IMPORT_C virtual void LightStatusChanged( TInt aTarget, CHWRMLight::TLightStatus aStatus );
+
+ /**
+ * Restore Buttons' state in some special case
+ *
+ * @since S60 3.0
+ */
+ void RestoreButtons( TMPXPlaybackState aState );
+
+ TInt CallSetPosition();
+
+ static TInt CallSetPosition( TAny* aAny );
+
+ /**
+ * Sets the ordinal position of a window.
+ *
+ * @param aNewOrdinalPosition The window's new ordinal position
+ *
+ * @since S60 3.0
+ */
+ void AdjustOrdinalPosition( TInt aNewOrdinalPosition );
+
+ /**
+ * Records the transition animation begin state.
+ */
+ void BeginTransition();
+
+ /**
+ * Mark the end state. Triggers the transtition.
+ */
+ void EndTransition();
+
+ /**
+ * Sets the transtition type for animation.
+ */
+ void SetTransitionType( TTransitionType aTransitionType );
+
+private:
+
+ /**
+ * Set layout for all elements and set sizes for icons.
+ */
+ void DoUpdateLayoutL();
+
+
+
+ protected: // data
+
+ MEikCommandObserver* iCommandObserver; // not owned
+ MMPXLayoutSwitchObserver* iLayoutObserver; // not owned
+ RPointerArray<CMPXPlaybackViewInfoLabel> iLabels; // owned
+
+
+
+
+
+ HBufC* iMinSecFormatString; // owned
+ HBufC* iShortFormatString; // owned
+
+ CGulIcon* iPlayIcon; // owned
+ CGulIcon* iPauseIcon; // owned
+ CGulIcon* iRandomIcon; // owned
+ CGulIcon* iRepeatOneIcon; // owned
+ CGulIcon* iRepeatAllIcon; // owned
+
+ CGulIcon* iDownloadSlider; // owned
+ CGulIcon* iPlaybackSlider; // owned
+ CGulIcon* iSliderBackground; // owned
+
+ CGulIcon* iDefaultAlbumArt; // owned
+ CFbsBitmap* iTrackAlbumArt; // owned
+
+#ifdef RD_RA_SUPPORT_FOR_MUSIC_PLAYER
+ CGulIcon* iRealIcon; // owned
+#endif
+
+ MAknsControlContext* iBackground; // owned
+
+ CMPXCommonUiHelper* iCommonUiHelper; // owned
+
+ TRect iBackgroundLayout;
+ TRect iIconLayout;
+ TRect iRandomIconRect;
+ TRect iRepeatIconRect;
+ TRect iSliderPaneRect;
+ TRect iSliderBackgroundRect;
+ TRect iPlaybackSliderRect;
+ TRect iDownloadSliderRect;
+ TRect iAlbumArtRect;
+#ifdef RD_RA_SUPPORT_FOR_MUSIC_PLAYER
+ TRect iRealIconRect;
+#endif
+
+ TMPXPbvPlaybackMode iMode;
+
+ TBool iRepeatAllMode;
+ TBool iRepeatOneMode;
+ TBool iRandomMode;
+#ifdef RD_RA_SUPPORT_FOR_MUSIC_PLAYER
+ TBool iRealAudioMode;
+#endif
+ TBool iFMTXMode;
+
+ TRect iCurrentLayout;
+
+ // Progress bar position - download
+ TReal iDownloadRatio;
+
+ // Progress bar position - playback
+ TReal iPlaybackRatio;
+
+ TBool iEqualizerEnabled;
+ TBool iEnableButtons;
+ TBool iEnableVolumeIndicator;
+ TBool iEnableMarquee;
+ TBool iDisplayAlbumArt;
+ TBool iPrerollCompleted;
+
+ CMPXButtonManager* iButtonManager; // owned
+ CIdle* iIdle;
+ TInt iIdleTaskCompleted;
+ MMPXPlaybackViewLayout* iLayout; // not owned
+ CPeriodic* iSeekTimer;
+
+ TInt iTrackTotalLengthInSeconds;
+ TInt64 iNewSongPosition; // Final position from touch progress bar
+ TBool iTouchDown; // Flag indicating touch progress bar is in use
+ TBool iActiveView;
+
+ TBool iIsForeground;
+ CHWRMLight::TLightStatus iLightStatus;
+ CHWRMLight *iLight;
+
+ TBool iDragProgressBar; //Flag drag progress bar
+ TTransitionType iTransitionType; // Transition direction
+ };
+
+#endif // CMPXCOMMONPLAYBACKVIEWCONTAINER_H
+
+// End of File