mpxplugins/viewplugins/views/mainview/inc/mpxmainviewimp.h
changeset 0 ff3acec5bc43
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpxplugins/viewplugins/views/mainview/inc/mpxmainviewimp.h	Thu Dec 17 08:45:05 2009 +0200
@@ -0,0 +1,500 @@
+/*
+* 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 main view implementation
+*
+*/
+
+
+
+#ifndef C_CMPXMAINVIEWIMP_H
+#define C_CMPXMAINVIEWIMP_H
+
+
+// INCLUDES
+#include <eikspmod.h>
+#include <eikclb.h>
+#include <mpxplaybackobserver.h>
+#include <mpxcollectionobserver.h>
+#include "mpxwaitnotedefs.h"
+
+#include "mpxmainview.h"
+#include "mpxalbumartutilobserver.h"
+
+// FORWARD DECLARATIONS
+class CMPXMainViewContainer;
+class MMPXViewUtility;
+class MMPXPlaybackUtility;
+class MMPXCollectionUtility;
+class CMPXCommonUiHelper;
+class CMPXAlbumArtUtil;
+class CMPXCollectionPath;
+class CMPXMediaArray;
+class CAknQueryDialog;
+
+// CLASS DECLARATION
+
+/**
+ *  MPX main view.
+ *
+ *  @lib mpxmainview.lib
+ *  @since S60 v3.0
+ */
+NONSHARABLE_CLASS( CMPXMainViewImp ) : public CMPXMainView,
+                                       public MMPXCollectionObserver,
+                                       public MMPXPlaybackObserver,
+                                       public MMPXPlaybackCallback,
+                                       public MEikListBoxObserver,
+                                       public MMPXAlbumArtUtilObserver
+    {
+public:
+
+    /**
+     * Two-phased constructor.
+     *
+     * @since 3.0
+     * @return Pointer to newly created object.
+     */
+    static CMPXMainViewImp* NewL();
+
+    /**
+     * Two-phased constructor.
+     *
+     * @since 3.0
+     * @return Pointer to newly created object.
+     */
+    static CMPXMainViewImp* NewLC();
+
+    /**
+     * Destructor.
+     */
+    virtual ~CMPXMainViewImp();
+
+public: // New Functions
+
+    /**
+    * Idle callback function
+    */
+    static TInt IdleCallback( TAny* ptr );
+
+    /**
+    * Idle processing function
+    */
+    void HandleIdleEventL();
+
+private:
+
+    /**
+     * C++ default constructor.
+     */
+    CMPXMainViewImp();
+
+    /**
+     * By default Symbian 2nd phase constructor is private.
+     */
+    void ConstructL();
+
+    /**
+     * Displays error notes.
+     *
+     * @param aError Error ID to be handled.
+     */
+    void HandleErrorL( TInt aError );
+
+    /**
+     * Function to display information notes
+     *
+     * @param aResourceId Resource ID of the text string.
+     */
+    void DisplayInfoNoteL( TInt aResourceId );
+
+    /**
+     * Function to display confirmation notes
+     *
+     * @param aResourceId Resource ID of the text string.
+     */
+    void DisplayConfirmionNoteL( TInt aResourceId );
+
+// From MMPXCollectionObserver
+
+    /**
+     * From MMPXCollectionObserver
+     * Handle collection message.
+     *
+     * @param aMessage Collection message
+     * @param aErr system error code.
+     */
+    void HandleCollectionMessage(
+        CMPXMessage* aMessage, TInt aError );
+
+    /**
+     *  From MMPXCollectionObserver
+     *  Handles the collection entries being opened. Typically called
+     *  when client has Open()'d a folder
+     *
+     *  @param aEntries collection entries opened
+     *  @param aIndex focused entry
+     *  @param aComplete ETrue no more entries. EFalse more entries
+     *                   expected
+     *  @param aError error code
+     */
+    void HandleOpenL(
+        const CMPXMedia& aEntries,
+        TInt aIndex,
+        TBool aComplete,
+        TInt aError );
+
+    /**
+     *  From MMPXCollectionObserver
+     *  Handles the collection entries being opened. Typically called
+     *  when client has Open()'d an item. Client typically responds by
+     *  'playing' the item
+     *
+     *  @param aPlaylist collection path to item
+     *  @param aError error code
+     */
+    void HandleOpenL(
+        const CMPXCollectionPlaylist& aPlaylist,
+        TInt aError );
+
+    /**
+     *
+     *  From MMPXCollectionObserver
+     *  Handle media properties
+     *  Notes: The client is responsible for delete the object of aProperties
+     *
+     *  @param aMedia media
+     *  @param aError error code
+     */
+    void HandleCollectionMediaL(
+        const CMPXMedia& aMedia,
+        TInt aError );
+
+// from base class MMPXPlaybackObserver
+
+    /**
+     * From MMPXPlaybackObserver
+     * Handle playback message
+     *
+     * @param aMessage playback message
+     * @param aErr system error code.
+     */
+    void HandlePlaybackMessage( CMPXMessage* aMessage, TInt aError );
+
+// from base class MMPXPlaybackCallback
+
+    /**
+     * From MMPXPlaybackCallback
+     * Handle playback property
+     *
+     * @param aProperty the property
+     * @param aValue the value of the property
+     * @param aError error code
+     */
+    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
+     *
+     * @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
+     */
+    void HandleSubPlayerNamesL(
+        TUid aPlayer,
+        const MDesCArray* aSubPlayers,
+        TBool aComplete,
+        TInt aError );
+
+    /**
+     * From MMPXPlaybackCallback
+     * Handle media properties
+     * Notes: The client is responsible for delete the object of aMedia
+     *
+     * @since 3.0
+     * @param aMedia media
+     * @param aError error code
+     */
+    void HandleMediaL(
+        const CMPXMedia& aMedia,
+        TInt aError );
+
+// from base class CAknView
+
+    /**
+     * From CAknView
+     * Returns views id.
+     *
+     * @since 3.0
+     * @return Views Uid
+     */
+    TUid Id() const;
+
+    /**
+     * From CAknView
+     * Command handling function.
+     *
+     * @since 3.0
+     * @param aCommand Command which is handled
+     */
+    void HandleCommandL( TInt aCommand );
+
+    /**
+     * From CAknView
+     * Handles a view activation.
+     *
+     * @param aPrevViewId Specifies the view previously active.
+     * @param aCustomMessageId Specifies the message type.
+     * @param aCustomMessage The activation message.
+     */
+    void DoActivateL(
+        const TVwsViewId& aPrevViewId,
+        TUid aCustomMessageId,
+        const TDesC8& aCustomMessage );
+
+    /**
+     * From CAknView
+     * View deactivation function.
+     */
+    void DoDeactivate();
+
+    /**
+     * From CAknView
+     * Foreground event handling function.
+     *
+     * @param aForeground Indicates the required focus state of the control.
+     */
+    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.
+     */
+    void DynInitMenuPaneL(
+        TInt aResourceId,
+        CEikMenuPane* aMenuPane );
+
+// from MEikListBoxObserver
+
+    /**
+     * Handles listbox events.
+     *
+     * @param aListBox Listbox where the event occurred.
+     * @param aEventType Event type.
+     */
+     void HandleListBoxEventL(
+        CEikListBox* aListBox,
+        TListBoxEvent aEventType );
+
+// from MMPXAlbumArtUtilObserver
+
+    /**
+     * From MMPXAlbumArtUtilObserver.
+     * Notify that extraction of album art started.
+     */
+    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
+     */
+    void ExtractAlbumArtCompleted(
+        CFbsBitmap* aBitmap,
+        TInt aErr );
+
+// New function
+
+    /**
+     *  Handle playback message
+     *
+     *  @param aMessage playback message
+     */
+    void DoHandlePlaybackMessageL(
+        const CMPXMessage& aMessage );
+
+    /**
+     *  Handle playback property
+     *
+     *  @param aProperty the property
+     *  @param aValue the value of the property
+     *  @param aError error code
+     */
+    void DoHandlePropertyL(
+        TMPXPlaybackProperty aProperty,
+        TInt aValue,
+        TInt aError );
+
+    /**
+     * Handle collection message
+     *
+     * @param aMessage collection message
+     */
+    void DoHandleCollectionMessageL( const CMPXMessage& aMessage );
+
+    /**
+     *  Handle media properties.
+     *  Notes: The client is responsible for delete the object of aMedia
+     *
+     *  @param aMedia media properties
+     *  @param aError error code
+     */
+    void DoHandleMediaL(
+        const CMPXMedia& aMedia,
+        TInt aError );
+
+    /**
+     *  Handle playback state changed.
+     *
+     *  @param aState New Playback state
+     */
+    void DoHandleStateChangedL(
+        TMPXPlaybackState aState );
+
+    /**
+     * Updates list box
+     *
+     * @param aEntries collection entries opened
+     * @param aIndex focused entry
+     */
+    void UpdateListBoxL(
+        const CMPXMedia& aEntries,
+        TInt aIndex );
+
+    /**
+    * Update the total item count text
+    * @param aMedia, media object containing the information
+    */
+    void UpdateItemCountTotalL( const CMPXMedia& aMedia );
+
+    /**
+     * Updates playback view status
+     *
+     */
+    void UpdatePlaybackViewStatusL();
+
+    /**
+     * Start either the refresh or scanning note
+     */
+    void StartWaitNoteL( TWaitNoteType aNoteType );
+
+    /**
+     * Close the waitnote dialog
+     * @param aSkipCheckIfActive - flags if the method should check if waitnote
+     *                             is the current view
+     */
+    void CloseWaitNoteL(TBool aSkipCheckIfActive = EFalse);
+
+    /**
+     * Handle a broadcast message event
+     * from the collection framework
+     * @arg aEvent, event to handle
+     */
+    void DoHandleBroadcastMsgL( TInt aEvent );
+
+    /**
+     * Handle a corrupt message sent from the collection server
+     */
+    void DoHandleCorruptMsgL();
+
+    /**
+    * Starts the MediaL() calls to update plugin info
+    */
+    void UpdatePluginInfo();
+
+    /**
+    * Send resynchronize collection command to specific collection(s)
+    */
+    void ResynchronizeCollectionL();
+
+    /**
+    * Calls MediaL to retrieve item details
+    */
+    void DoRetrieveDetailsL(TBool aSkipAttribute = EFalse);
+
+    /**
+     * Album art is extracted from file and ready to use.
+     *
+     * @param aBitmap a converted image. Ownership is transferred.
+     * @param aErr error code
+     */
+    void DoExtractAlbumArtCompletedL( CFbsBitmap* aBitmap,
+                                     TInt aErr );
+
+    /**
+    * Sets the default focus
+    * Sets a KMPXCommandIdCollectionSelect command with
+    * selection index of 0
+    */
+    void DoSetDefaultFocusL();
+
+private:    // Data
+
+    CMPXMainViewContainer*      iContainer;  // own
+    MMPXPlaybackUtility*        iPlaybackUtility;
+    MMPXViewUtility*            iViewUtility;
+    MMPXCollectionUtility*      iCollectionUtility;
+    CMPXAlbumArtUtil*           iMPXUtility;
+    CMPXCommonUiHelper*         iCommonUiHelper;
+    TInt                        iResourceOffset;       // must be freed
+    TBool                       iColInitialized;
+
+    // Incremental update to listbox
+    CMPXCollectionPath*         iCurPath;
+    CMPXMediaArray*             iMediaArray;
+    TInt                        iCurPlugin;
+    TBool                       iInitDBNeeded;
+    TBool                       iInitDBCorrupted;
+    TBool                       iDelayedUsbRefresh;
+    TBool                       iOutOfDisk;
+
+    // playback view status
+    HBufC*                      iTitle;
+    TInt                        iDuration;
+    TInt                        iPosition;
+    TInt                        iPlaybackState;
+    TInt                        iAlbumArtIndex;
+
+    // Handlng system events
+    CAknQueryDialog*            iQueryDialog;  // not owned, only for dismissal
+    TInt                        iCurSystemEvent;
+
+    TBool                       iShowPlaybackIndicator;
+    TBool                       iRefreshingCollection;
+    TBool                       iExitOptionHidden;
+    TBool                       iDelayPluginInfoUpdate;
+    TInt                        iCurPlPlayPosition;
+    TInt                        iCurPlTotalCount;
+    CIdle*                      iIdle;
+    TBool                       iDiskDismountDuringFormat;
+    TBool                       iPathCorrupted;
+    };
+
+#endif  // C_CMPXMAINVIEWIMP_H
+
+// End of File