tsrc/VCXTestMyVideosCollectionClient/inc/VCXTestMyVideosCollectionClient.h
changeset 0 96612d01cf9f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/VCXTestMyVideosCollectionClient/inc/VCXTestMyVideosCollectionClient.h	Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,266 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+*
+*/
+
+
+#ifndef VCXTESTMYVIDEOSCOLLECTIONCLIENT_H_
+#define VCXTESTMYVIDEOSCOLLECTIONCLIENT_H_
+
+// INCLUDES
+#include <e32base.h>
+#include "VCXTestMyVideosObserver.h"
+#include "MIptvTestTimerObserver.h"
+
+#include <mpxcollectionobserver.h>
+#include <mpxmediabase.h>
+#include <vcxmyvideosdefs.h>
+
+// CONSTANTS
+const TInt KVCXTestMpxLevelRoot          = 1;
+const TInt KVCXTestMpxLevelCategory      = 2;
+const TInt KVCXTestMpxLevelVideo         = 3;
+
+// MACROS
+
+// FORWARD DECLARATIONS
+
+// DATA TYPES
+
+// CLASS DECLARATION
+class MMPXCollectionUtility;
+class CVCXTestCommon;
+class CIptvTestActiveWait;
+class CIptvTestTimer;
+
+class TVCXTestDownload
+    {
+    public:
+        TVCXTestDownload()
+            {
+            iMdsId = 0;
+            iState = 0; 
+            iDownloadId = 0;
+            iProgress = 0;
+            iDownloadError = 0;
+            iGlobalError = 0;                
+            }
+        
+        TInt32 iMdsId;
+        TUint8 iState; 
+        TUint32 iDownloadId;
+        TInt8 iProgress;
+        TInt32 iDownloadError;
+        TInt32 iGlobalError;                
+    };
+
+/**
+*  CVCXTestMyVideosCollectionClient 
+*
+*  @lib ?library
+*  @since ?Series60_version
+*/
+class CVCXTestMyVideosCollectionClient : public CBase, public MMPXCollectionObserver, public MIptvTestTimerObserver
+    {
+
+public:  // Constructors and destructor
+     
+     /**
+     * Two-phased constructor.
+     */
+     IMPORT_C static CVCXTestMyVideosCollectionClient* NewL( MVCXTestMyVideosObserver* aObserver );
+
+     /**
+     * Destructor.
+     */
+     virtual ~CVCXTestMyVideosCollectionClient();
+
+private:
+    
+    /**
+    * C++ default constructor.
+    */
+    CVCXTestMyVideosCollectionClient( MVCXTestMyVideosObserver* aObserver );
+
+    /**
+    * By default Symbian 2nd phase constructor is private.
+    */
+    void ConstructL( );
+    
+public: // Functions from base classes.
+    
+    /**
+    *  From MMPXCollectionObserver->MMPXCollectionMediaObserver
+    *  Handle extended media properties
+    *
+    *  @param aMedia media
+    *  @param aError error code
+    */
+    void HandleCollectionMediaL( const CMPXMedia& aMedia, TInt aError );
+
+    /**
+    *  From MMPXCollectionUtilityObserver.
+    *  Handle collection message
+    *  NOTE: only one of HandleCollectionMessage callback can be implemented
+    *
+    *  @param aMessage collection message, ownership not transferred.
+    *         Please check aMsg is not NULL before using it. If aErr is not
+    *         KErrNone, plugin might still call back with more info in the aMsg.
+    *  @param aErr system error code.
+    */
+    void HandleCollectionMessage( CMPXMessage* aMessage, TInt aError );
+
+    void HandleSingleCollectionMessageL( CMPXMessage* aMessage );
+    
+    void HandleMyVideosMessageL( CMPXMessage* aMessage );
+    void HandleGeneralMessageL( CMPXMessage* aMessage );
+    void HandleItemChangedMessageL( CMPXMessage* aMessage );
+
+    /**
+    *  From MMPXCollectionUtilityObserver.
+    *  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 MMPXCollectionUtilityObserver.
+    *  Handles the item being opened. Typically called
+    *  when client has Open()'d an item. Client typically responds by
+    *  'playing' the item via the playlist
+    *
+    *  @param aPlaylist collection playlist
+    *  @param aError error code
+    */
+    void HandleOpenL( const CMPXCollectionPlaylist& aPlaylist, TInt aError );
+
+    /**
+    *  From MMPXCollectionUtilityObserver.
+    *  Handle completion of a asynchronous command
+    *  @param aCommandResult result of the command, NULL if error
+    *  @param aError error code
+    */
+    void HandleCommandComplete( CMPXCommand* aCommandResult,
+                                TInt aError);
+
+    /**
+    * From MIptvTestTimerObserver Handles timer completion
+    * @since
+    * @param aTimerId
+    * @param aError
+    */
+    void TimerComplete( TInt aTimerId, TInt aError );
+        
+private: // New functions.
+    
+    IMPORT_C void OpenCollectionL();
+    
+    IMPORT_C void OpenCollectionLevelL( TUint32 aIndex );
+    
+    IMPORT_C void UpdateVideoListL( TBool aComplete );
+    
+    IMPORT_C void UpdateDownloadListL();
+    
+    IMPORT_C void UpdateMediaArrayL();
+    
+    IMPORT_C void PrintMediasL( CMPXMediaArray* aMediaArray );
+    
+    IMPORT_C TBool UpdateDownloadL( CMPXMedia* aMedia );
+    
+    IMPORT_C static TBool CompareDownloads( const TVCXTestDownload& a1, const TVCXTestDownload& a2 );
+
+    IMPORT_C CMPXCommand* CreateMpxCommandLC( TInt aCommandGeneralId, TInt aMyVideosCommandId, TBool aSync );    
+    
+public: // New functions.
+    
+    IMPORT_C void RefreshCollectionL();
+
+    IMPORT_C TInt LevelsL();
+    
+    IMPORT_C TInt VideoCount();
+    
+    IMPORT_C CMPXMedia* GetVideoL( TUint aIndex );
+    
+    IMPORT_C void RemoveVideoL( TUint aIndex );
+    
+    IMPORT_C TInt DownloadCount();    
+    
+    IMPORT_C void DownloadL( const TDesC& aUrl, TUint aIapId, const TDesC& aUserName, const TDesC& aPassword );
+    
+    IMPORT_C void CancelDownloadL( TUint aIndex );
+    
+    IMPORT_C void EnsureMediaFilesAreNotInUseL();
+    
+    IMPORT_C TInt GetCountOfOngoingDownloads();
+    
+    IMPORT_C TInt GetCountOfNewVideos( TBool aIncludeDownloads );
+    
+private: // Data
+    
+    TInt iCollectionUid;
+    
+    MVCXTestMyVideosObserver* iObserver;
+    
+    TInt iOpenLevelIndex;
+    
+    // MMPXCollectionUtility.
+    MMPXCollectionUtility* iCollectionUtility;
+    
+    // Entries from MPX plugin are saved here.
+    CMPXMedia* iCurrentEntries;
+
+    // Media array for iCurrentEntries.
+    CMPXMediaArray* iMediaArray;
+    
+    // Media array for only videos.
+    CMPXMediaArray* iVideos;
+    
+    // Media array for only downloads.
+    CMPXMediaArray* iDownloads;
+    
+    // RFs.
+    RFs iFs;
+
+    // CVCXTestCommon.
+    CVCXTestCommon* iTestCommon;
+
+    // Refresh is already ongoing.
+    TBool iRefreshingCollection;
+
+    // Active wait.
+    CIptvTestActiveWait* iActiveWait;
+
+    // Timer.
+    CIptvTestTimer* iTimer;
+    
+    // IDs of new videos from collection message KMPXMessageIdItemChanged are hold here until 
+    // video list is refreshed.
+    RArray<TInt> iInsertedVideoMdsIds;
+    
+    // Information of ongoing downloads.
+    RArray<TVCXTestDownload> iOngoingDownloads;
+    
+    // Information of completed downloads.
+    RArray<TVCXTestDownload> iCompletedDownloads;
+    };
+
+#endif /* VCXTESTMYVIDEOSCOLLECTIONCLIENT_H_ */