mpxplugins/viewplugins/inc/mpxcommonplaybackviewimp.h
changeset 0 ff3acec5bc43
child 2 b70d77332e66
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpxplugins/viewplugins/inc/mpxcommonplaybackviewimp.h	Thu Dec 17 08:45:05 2009 +0200
@@ -0,0 +1,760 @@
+/*
+* 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 implementation
+*  Version     : %version: da1mmcf#41.1.6.1.1.1.8 % << Don't touch! Updated by Synergy at check-out.
+*
+*/
+
+
+
+#ifndef CMPXCOMMONPLAYBACKVIEWIMP_H
+#define CMPXCOMMONPLAYBACKVIEWIMP_H
+
+
+// INCLUDES
+#include <aknview.h>
+#include <AknServerApp.h>
+#include <AknProgressDialog.h>  // MProgressDialogCallback
+#include <mpxplaybackobserver.h>
+#include <mpxcollectionobserver.h>
+#include <mpxcollectionuihelper.h>
+#include <mpxcollectionuihelperobserver.h>
+#include <mpxpskeyobserver.h>   // MMPXPSKeyObserver
+#include <mpxcenrepobserver.h>  // MMPXCenRepObserver
+#include <mpxviewactivationobserver.h>  // MMPXViewActivationObserver
+
+#include "mpxlayoutswitchobserver.h"
+#include "mpxplaybackframeworkdefs.h" // TMPXPlaybackPlayerType
+
+#include "../../../inc/musicplayerbldvariant.hrh"
+
+// FORWARD DECLARATIONS
+class CMPXCommonPlaybackViewContainer;
+class MMPXPlaybackUtility;
+class CMPXAlbumArtUtil;
+class CMPXCommonUiHelper;
+class MMPXViewUtility;
+class CMPXCollectionPlaylist;
+class CMPXCommonPlaybackViewLayout;
+class MMPXPlayerManager;
+class MMPXCollectionUtility;
+class CMPXPSKeyWatcher;
+class CMPXCenRepWatcher;
+#ifdef IAD_INCLUDE_BACKSTEPPING
+class MMPXBackSteppingUtility;
+#endif // IAD_INCLUDE_BACKSTEPPING
+class CAiwServiceHandler;
+class CMediaRecognizer;
+class CAiwGenericParamList;
+#ifdef IAD_INCLUDE_UPNP
+class CUpnpCopyCommand;
+#endif
+// CLASS DECLARATION
+
+/**
+ *  MPX playback view.
+ *
+ *  @lib mpxplaybackview.lib
+ *  @since S60 v3.0
+ */
+class CMPXCommonPlaybackViewImp : public CAknView,
+                                  public MMPXPlaybackObserver,
+                                  public MMPXPlaybackCallback,
+                                  public MAknServerAppExitObserver,
+                                  public MMPXLayoutSwitchObserver,
+                                  public MCoeViewActivationObserver,
+                                  public MMPXCHelperObserver,
+                                  public MMPXPSKeyObserver,
+                                  public MMPXCenRepObserver,
+                                  public MProgressDialogCallback,
+                                  public MMPXViewActivationObserver,
+                                  public MMPXCollectionObserver
+    {
+public:
+    enum TCommandSender
+        {
+        ECsUnknown,
+        ECsMediaKey,
+        ECsRenderer
+        };
+public:
+    /**
+     * Destructor.
+     */
+    IMPORT_C virtual ~CMPXCommonPlaybackViewImp();
+
+protected:
+    /**
+     * By default Symbian 2nd phase constructor is private.
+     */
+    IMPORT_C virtual void ConstructL();
+
+    /**
+     * Updates playback view.
+     */
+    IMPORT_C virtual void UpdateViewL();
+
+    /**
+     * Updates track info field.
+     *
+     * @param aMedia Media's properties. If NULL, default info will
+     *                    be shown.
+     */
+    IMPORT_C virtual void UpdateTrackInfoL(
+        const CMPXMedia* aMedia );
+
+    /**
+     * Update current playback state.
+     *
+     * @param aPlaybackState Current playback state.
+     */
+    IMPORT_C virtual void UpdatePlaybackState(
+        TMPXPlaybackState aPlaybackState );
+
+    /**
+     * Updates track's playback position.
+     *
+     * @param  aPos, New playback postions in seconds
+     * @param  aDuration, Track duration in seconds
+     */
+    IMPORT_C virtual void UpdateTrackPlaybackPositionL(
+        TInt aPos,
+        TInt aDuration );
+
+    /**
+     * Updates track's album art.
+     *
+     * @param aMedia Media's properties. If NULL, default album art
+     *                    will be shown.
+     */
+    IMPORT_C virtual void UpdateAlbumArtL(
+        const CMPXMedia* aMedia );
+
+    /**
+     * Updates track position in playlist field.
+     */
+    IMPORT_C virtual void UpdateTrackPosInPlaylistL();
+
+    /**
+     * Updates download state label.
+     */
+    IMPORT_C virtual void UpdateDownloadStateLabelL();
+
+    /**
+     * Updates the title pane
+     */
+    IMPORT_C virtual void UpdateTitlePaneL();
+
+    /**
+     * Updates FM Transmitter Info
+     */
+    IMPORT_C virtual void UpdateFMTransmitterInfoL(
+        TBool aForceUpdate = EFalse );
+
+    /**
+     *  Handle playback message
+     *
+     *  @param aMsg playback message
+     */
+    IMPORT_C virtual void DoHandlePlaybackMessageL(
+        const CMPXMessage& aMessage );
+
+    /**
+     *  Handle playback property
+     *
+     *  @param aProperty the property
+     *  @param aValue the value of the property
+     *  @param aError error code
+     */
+    IMPORT_C virtual void DoHandlePropertyL(
+        TMPXPlaybackProperty aProperty,
+        TInt aValue,
+        TInt aError );
+
+    /**
+     *  Handle media properties.
+     *
+     *  @param aMedia media properties
+     *  @param aError error code
+     */
+    IMPORT_C virtual void DoHandleMediaL(
+        const CMPXMedia& aMedia,
+        TInt aError );
+
+    /**
+     *  Handle playback state changed.
+     *
+     *  @param aState New Playback state
+     *  @param aData Extra data parameter, used for any extra information
+     *               along with the state change message
+     */
+    IMPORT_C virtual void DoHandleStateChangedL(
+        TMPXPlaybackState aState,
+        TInt aData );
+
+    /**
+     * Get simple embedded mode.
+     *
+     * @return ETrue if the player is in the embedded mode (i.e. launched
+     *         from Browser or Message Centre).
+     */
+    IMPORT_C virtual TBool SimpleEmbeddedMode() const;
+
+    /**
+     * Get embedded status.
+     *
+     * @return ETrue if in embedded mode. Otherwise, EFalse.
+     */
+    IMPORT_C virtual TBool IsEmbedded() const;
+
+    /**
+     * Displays error notes.
+     *
+     * @param aError Error ID to be handled.
+     */
+    IMPORT_C virtual void HandleErrorL( TInt aError );
+
+    /**
+     * Displays error note for when all tracks are invalid,
+     * and goes back to collection list view
+     */
+    IMPORT_C virtual void HandleAllTracksInvalidL();
+
+    /**
+     * Checks whether or not to skip to next track on an error
+     *
+     * @param aCurrentIndex Current index
+     */
+    IMPORT_C virtual void SkipOnErrorL( TInt aCurrentIndex, TInt aCount );
+
+    /**
+     * Function to display information notes
+     *
+     * @param aResourceId Resource ID of the text string.
+     */
+    IMPORT_C virtual void DisplayInfoNoteL( TInt aResourceId );
+
+    /**
+     * Function to display confirmation notes
+     *
+     * @param aResourceId Resource ID of the text string.
+     */
+    IMPORT_C virtual void DisplayConfirmionNoteL( TInt aResourceId );
+
+    /**
+     * Set process priority.
+     */
+    IMPORT_C virtual void SetProcessPriority();
+
+    /**
+     * Launch equalizer dialog.
+     */
+    IMPORT_C virtual void LaunchEqualizerL();
+
+    /**
+     * Launch Music Settings view.
+     */
+    IMPORT_C virtual void LaunchMusicSettingsL();
+
+    /**
+     * Launch FM Transmitter
+     */
+    IMPORT_C virtual void LaunchFMTransmitterL();
+
+    /**
+     * Request for the media object
+     * aDrm Flag whether or not to request all DRM info as well
+     */
+    IMPORT_C virtual void RequestMediaL( TBool aDrm=EFalse );
+
+    /**
+    * Prepare status pane for full-screen playback view.
+    */
+    void PrepareStatusPaneForPlaybackViewL();
+
+    /**
+    * Restore status pane to it's normal state.
+    */
+    void PrepareStatusPaneForExitingViewL();
+
+    /**
+     * Checks if UPnP AP is defined
+     */
+    IMPORT_C virtual TBool IsUpnpVisible();
+
+    /**
+     * Displays the available players in the Play via submenu
+     */
+    IMPORT_C virtual void AddPlayersNamesToMenuL( CEikMenuPane& aMenuPane );
+
+    /**
+     * Adds one player type to the Play via submenu
+     * @param aMenuPane Menu pane
+     * @param aCommandId Command id
+     * @param aPlayerManager Playback Utility manager
+     * @param aPlayerType Current player type (Local, Remote)
+     * @param aMenuText Text to be added to the menu
+     */
+    IMPORT_C virtual void AddPlayerNameToMenuL( CEikMenuPane& aMenuPane,
+                                TInt aCommandId,
+                                MMPXPlayerManager& aPlayerManager,
+                                TMPXPlaybackPlayerType& aPlayerType,
+                                const TDesC& aMenuText = KNullDesC );
+
+    /**
+     * Retrieves the current player name and type
+     */
+    IMPORT_C virtual void GetCurrentPlayerDetails();
+
+    /**
+     * Selects a new player for audio playback
+     */
+    IMPORT_C virtual void SelectNewPlayerL( TInt aCommand );
+
+    /**
+     * Adds current item to a saved playlist
+     */
+    IMPORT_C virtual void AddToSavedPlaylistL();
+
+    /**
+     * Adds current item to a new playlist
+     */
+    IMPORT_C virtual void AddToNewPlaylistL();
+
+    /**
+     * Prepares media for adding to a playlist
+     * @return Media object for adding to playlist.  Caller is
+     * responsible for deleting and popping off cleanupstack
+     */
+    IMPORT_C virtual CMPXMedia* PrepareMediaForPlaylistLC(
+        const CMPXMedia& aMedia );
+
+    /**
+     * Check if the command is supported by the remote player
+     * @return TBool whether the command is supported or not
+     */
+    IMPORT_C virtual TBool IsCommandSupportedL();
+
+// from base class MProgressDialogCallback
+    /**
+     * From MProgressDialogCallback
+     * Callback method
+     * Get's called when a dialog is dismissed.
+     */
+    IMPORT_C virtual void DialogDismissedL( TInt aButtonId );
+
+    /*
+     * From MMPXCHelperObserver
+     * Handles the completion of any collection helper event.
+     *
+     * @param aOperation, operation completed
+     * @param aErr. the error code
+     * @param aArgument Argument returned from the operation
+     */
+    IMPORT_C virtual void HandleOperationCompleteL( TCHelperOperation aOperation,
+                                                    TInt aError,
+                                                    void* aArgument );
+
+// from base class MMPXPlaybackObserver
+
+    /**
+     * From MMPXPlaybackObserver
+     * Handle playback message
+     *
+     * @since 3.1
+     * @param aMessage Playback Message
+     * @param aErr system error code.
+     */
+    IMPORT_C virtual void HandlePlaybackMessage(
+        CMPXMessage* aMessage, TInt aError );
+
+// from base class MMPXPlaybackCallback
+
+    /**
+     * From MMPXPlaybackCallback
+     * Handle playback property
+     *
+     * @since 3.0
+     * @param aProperty the property
+     * @param aValue the value of the property
+     * @param aError error code
+     */
+    IMPORT_C virtual void HandlePropertyL(
+        TMPXPlaybackProperty aProperty,
+        TInt aValue,
+        TInt aError );
+
+    /**
+     * From MMPXPlaybackCallback
+     * Method is called continously until aComplete=ETrue, signifying that
+     * it is done and there will be no more callbacks
+     * Only new items are passed each time
+     *
+     * @since 3.0
+     * @param aPlayer UID of the subplayer
+     * @param aSubPlayers a list of sub players
+     * @param aComplete ETrue no more sub players. EFalse more subplayer
+     *                  expected
+     * @param aError error code
+     */
+    IMPORT_C virtual void HandleSubPlayerNamesL(
+        TUid aPlayer,
+        const MDesCArray* aSubPlayers,
+        TBool aComplete,
+        TInt aError );
+
+    /**
+     * From MMPXPlaybackCallback
+     * Handle media properties
+     *
+     * @since 3.0
+     * @param aMedia media
+     * @param aError error code
+     */
+    IMPORT_C virtual void HandleMediaL(
+        const CMPXMedia& aMedia,
+        TInt aError );
+
+// from base class MMPXCollectionMediaObserver
+    /**
+    *  Handle extended media properties
+    *
+    *  @param aMedia media
+    *  @param aError error code
+    */
+    IMPORT_C virtual void HandleCollectionMediaL(
+        const CMPXMedia& aMedia,
+        TInt aError);
+
+
+// from base class CAknView
+
+    /**
+     * From CAknView
+     * Command handling function.
+     *
+     * @since 3.0
+     * @param aCommand Command which is handled
+     */
+    IMPORT_C virtual void HandleCommandL( TInt aCommand );
+
+    /**
+     * From CAknView
+     * Processes user commands.
+     *
+     * @since 3.0
+     * @param aCommand ID of the command to respond to.
+     */
+    IMPORT_C virtual void ProcessCommandL( TInt aCommand );
+
+    /**
+     * From CAknView
+     * Event handler for status pane size changes.
+     *
+     * @since 3.0
+     */
+    virtual void HandleStatusPaneSizeChange();
+
+    /**
+     * From CAknView
+     * Handles a view activation.
+     *
+     * @param aPrevViewId Specifies the view previously active.
+     * @param aCustomMessageId Specifies the message type.
+     * @param aCustomMessage The activation message.
+     */
+    IMPORT_C virtual void DoActivateL(
+        const TVwsViewId& aPrevViewId,
+        TUid aCustomMessageId,
+        const TDesC8& aCustomMessage );
+
+    /**
+     * From CAknView
+     * View deactivation function.
+     */
+    IMPORT_C virtual void DoDeactivate();
+
+    /**
+     * From CAknView
+     * Foreground event handling function.
+     *
+     * @param aForeground Indicates the required focus state of the control.
+     */
+    IMPORT_C virtual void HandleForegroundEventL( TBool aForeground );
+
+// from base class MEikMenuObserver
+
+    /**
+     * From MEikMenuObserver
+     * Dynamically initialises a menu pane.
+     *
+     * @param aResourceId The ID of the menu pane.
+     * @param aMenuPane The menu pane itself.
+     */
+    IMPORT_C void DynInitMenuPaneL(
+        TInt aResourceId,
+        CEikMenuPane* aMenuPane );
+
+// from base class MMPXLayoutSwitchObserver
+
+    /**
+     * From MMPXLayoutSwitchObserver
+     * Callback function when layout is changed.
+     *
+     * @since S60 v3.0
+     */
+    IMPORT_C virtual void HandleLayoutChange();
+
+// from base class MCoeViewDeactivationObserver
+
+    /**
+     * From MCoeViewDeactivationObserver
+     * Handles the activation of the view aNewlyActivatedViewId before
+     * the old view aViewIdToBeDeactivated is to be deactivated
+     *
+     * @param aNewlyActivatedViewId View ID that is newly activated.
+     * @param aViewIdToBeDeactivated View ID to be deactivated.
+     */
+    IMPORT_C virtual void HandleViewActivation(
+        const TVwsViewId& aNewlyActivatedViewId,
+        const TVwsViewId& aViewIdToBeDeactivated );
+
+// from base class MMPXViewActivationObserver
+
+    /**
+     * From MMPXViewActivationObserver
+     * Handle view activation.
+     *
+     * @param aCurrentViewType Current view type Uid.
+     * @param aPreviousViewType Previous view type Uid.
+     */
+    IMPORT_C virtual void HandleViewActivation(
+        const TUid& aCurrentViewType,
+        const TUid& aPreviousViewType );
+
+    /**
+     * @see MMPXViewActivationObserver
+     */
+    IMPORT_C void HandleViewUpdate(
+        TUid aViewUid,
+        MMPXViewActivationObserver::TViewUpdateEvent aUpdateEvent,
+        TBool aLoaded,
+        TInt aData);
+
+// from base class MMPXPSKeyObserver
+
+    /**
+    * From MMPXPSKeyObserver
+    * Handle PS event
+    *
+    * @param aUid The UID that identifies the property category
+    * @param aKey The property sub-key
+    */
+    IMPORT_C virtual void HandlePSEvent(
+        TUid aUid,
+        TInt aKey );
+
+// from base class MMPXCenRepObserver
+
+    /**
+    * From MMPXCenRepObserver
+    * Handle a change in a setting value.
+    *
+    * @param aRepositoryUid Central repository UID containing the setting
+    * @param aSettingId Id of the setting
+    */
+    IMPORT_C virtual void HandleSettingChange(
+        const TUid& aRepositoryUid,
+        TUint32 aSettingId );
+
+// From base class MMPXCollectionObserver
+
+    /**
+    * From MMPXCollectionObserver
+    */
+    IMPORT_C virtual void HandleCollectionMessage(CMPXMessage* aMsg, TInt aErr);
+
+    /**
+    * From MMPXCollectionObserver
+    */
+    IMPORT_C virtual void HandleOpenL(const CMPXMedia& aEntries, TInt aIndex,
+                                      TBool aComplete, TInt aError);
+
+    /**
+    * From MMPXCollectionObserver
+    */
+    IMPORT_C virtual void HandleOpenL(const CMPXCollectionPlaylist& aPlaylist,TInt aError);
+
+    /**
+    * From MMPXCollectionObserver
+    */
+    IMPORT_C virtual void HandleCommandComplete(CMPXCommand* aCommandResult,
+                                                TInt aError);
+
+    void FillAiwParametersL( CAiwGenericParamList& aParamList, TBool aSaved = EFalse );
+    /**
+     * Updates the middle softkey display to a label or icon depending on the playback state
+     * @param aMskId middle softkey command id
+     */
+    IMPORT_C void UpdateMiddleSoftKeyDisplayL();
+    /**
+     * Updates the middle (play/pause) toolbar control key icon based on playback state
+     */
+    IMPORT_C void UpdateToolbar();
+protected:
+    static TInt DeferredAlbumArtExtractCallback( TAny* aPtr );
+
+    /**
+    * Callback function for delayed view deactivation
+    * @param aPtr pointer to self
+    */
+    static TInt DelayedExit( TAny* aPtr);
+
+private:
+    /**
+     *  Handle playback error message
+     *
+     *  @param aErr system error code.
+     */
+    void DoHandleErrorPlaybackMessageL( TInt aError );
+
+    /**
+     *  Handle collection message
+     *
+     *  @param aMsg Message to handle.
+     *  @param aErr system error code.
+     */
+    void DoHandleCollectionMessageL( CMPXMessage* aMsg, TInt aErr );
+    
+    /**
+     * Callback function of timer to handle delayed error
+     * @param aPtr pointer to self
+     */
+    static TInt HandleDelayedError( TAny* aPtr );
+
+protected:    // Data
+
+    MMPXPlaybackUtility* iPlaybackUtility;  // not own
+    CMPXCommonPlaybackViewContainer* iContainer;  // own
+
+    CMPXAlbumArtUtil* iMPXUtility;   // own
+    CMPXMedia* iMedia;  // own
+
+    CMPXCommonUiHelper* iCommonUiHelper;    // own
+
+    CMPXPSKeyWatcher*   iPSKeyWatcher;      // own
+    CMPXCenRepWatcher*  iCRWatcher;         // own
+    TInt                iFMTxFreqKHz;
+
+    // View utility.
+    MMPXViewUtility* iViewUtility;
+
+    // Current playback states
+    TInt iDuration; // in seconds
+    TInt iPosition; // in seconds
+    TMPXPlaybackState iPlaybackState;
+    TInt iRandomMode;
+    TInt iRepeatMode;
+
+    TBool iEmbedded;
+    TBool iSwitchingView;
+    TBool iExitOptionHidden;
+
+    // Feature flag for set as ringtone
+    TBool iChangeRTForAllProfiles;
+
+    // Error code to be handled at a later time
+    TInt iDelayedError;
+
+    CMPXCommonPlaybackViewLayout* iLayout;  // owned
+
+//#ifdef __UPNP_FRAMEWORK_2_0_
+    RArray<TUid> iPlayersList;
+    TMPXPlaybackPlayerType iCurrentPlayerType;
+    HBufC* iSubPlayerName;
+//#endif //__UPNP_FRAMEWORK_2_0_
+
+    CAknProgressDialog* iWaitNote;
+
+    MMPXCollectionUtility* iCollectionUtility;
+    MMPXCollectionUiHelper* iCollectionUiHelper;
+
+    TInt iStartPlaybackIndex;
+    TInt iLastSkipDirection;
+    TBool iSkipping;
+    TInt iPreviousStatusPaneLayout;
+
+    // Flag whether or not this was the last playback view activated,
+    // used for error handling
+    TBool iLastPBViewActivated;
+
+    // Flag used for disable error msg pop up when usb event happens
+    TBool iIgnoredByUsbEvent;
+
+    // Flag that next view to be activated is a playback view type
+    TBool iPBViewToBeActivated;
+    
+    // Flag that indicates Camese SuperDistribution Support
+    TBool iCameseSuperDistSupport;
+
+    // Flag that indicates a new item has been opened from Collection View.
+    // Used for Camese Superdistribution error handling.
+    TBool iNewItemOpened;
+
+    CIdle* iIdle;
+
+    // Idle for delayed exit
+    CIdle* iDelayedExit;
+
+private:    // Data
+
+    TInt iResourceOffset;       // must be freed
+
+    TInt iFMTXResourceOffset;   // must be freed
+
+#ifdef IAD_INCLUDE_BACKSTEPPING
+    MMPXBackSteppingUtility* iBackSteppingUtility;
+#endif // BACKSTEPPING_INCLUDED
+
+    CMPXMedia* iUserPlaylists;  // owned
+    TBool iKeySoundDisabled;
+    TBool iDatabaseNotReady;
+    CAiwServiceHandler* iServiceHandler;
+    CMediaRecognizer* iMediaRecognizer;
+    TInt iErrorAttachAssignMenu;
+    TBool iSkipBtnPressed;
+
+//#ifdef __UPNP_FRAMEWORK_2_0_
+    TBool iUpnpFrameworkSupport;
+//#endif //__UPNP_FRAMEWORK_2_0_
+
+    TInt iLastDelayedErr;
+    TInt iErrIndex;
+    CPeriodic* iDelayedErrorTimer;
+    // Indicate FF button pressed or not
+    TBool iIsffButtonPressed;
+    TBool iBacking;
+#ifdef IAD_INCLUDE_UPNP    
+	CUpnpCopyCommand* iUpnpCopyCommand;
+#endif
+	TBool iUnsupportedNoteDisabled;
+    HBufC* iOldUri;
+	TInt iOldPosition; // in seconds
+	TBool iIsTapped;
+    TCommandSender iCommandSender;
+    };
+
+#endif  // CMPXCOMMONPLAYBACKVIEWIMP_H
+
+// End of File