--- /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