--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videofeeds/scheduleddlplugin/inc/vcnsscheduleddownloadmpxclient.h Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,364 @@
+/*
+* Copyright (c) 2008 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: Class for handling mpx collection interactions*
+*/
+
+
+
+
+#ifndef VCXNSDOWNLOADCLIENTHANDLER_H_
+#define VCXNSDOWNLOADCLIENTHANDLER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <mpxcollectionobserver.h>
+
+#include "CIptvUtil.h"
+
+// FORWARD DECLARATIONS
+class CIptvService;
+class CIptvMediaContent;
+class MMPXCollectionUtility;
+class CIptvVodContentClient;
+class CIptvVodDlDownloadEvent;
+
+/**
+* MVcxNsMpxClientObserver
+*
+* class specifies the interface for CVcxNsScheduledDownloadMpxClient callback function.
+* Client must inherit this and implement the virtual functions.
+*/
+class MVcxNsMpxClientObserver
+ {
+
+public: // New functions
+
+ /**
+ * This emulates old fashion dl client events
+ */
+ virtual void HandleVodDlDownloadEvent( CIptvVodDlDownloadEvent& aEvent ) = 0;
+
+ };
+
+/**
+* Class CVcxNsScheduledDownloadMpxClient handles mpx collection client interactions.
+*
+* @lib iptvscheduleddownloadplugin.lib
+*/
+class CVcxNsScheduledDownloadMpxClient : public CBase,
+ public MMPXCollectionObserver
+ {
+
+public:
+
+ /**
+ * Two-phased constructor.
+ */
+ static CVcxNsScheduledDownloadMpxClient* NewL( MVcxNsMpxClientObserver& aObserver,
+ CIptvVodContentClient& aContentClient,
+ TUint32 aServiceId );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CVcxNsScheduledDownloadMpxClient();
+
+ /**
+ * Download content from service.
+ * @param aIapId
+ * @param aService Service.
+ * @param aContentId Content ID identifier.
+ * @param aName Content name.
+ * @param aIndex Content access index.
+ * @param aDltype Type of the requested download, currently only EIptvDownloadTypeImmediate
+ * supported.
+ * @return Error code, indicates if download is started successfully. If return code is
+ * EIptvDlNoError, then further download status is reported via events, on error
+ * no further events will arrive.
+ */
+ TIptvDlError DownloadL(
+ TUint32 aIapId,
+ CIptvService* aService,
+ TIptvContentId aContentId,
+ const TDesC& aName );
+
+ /**
+ * Cancels download.
+ * Operation includes clean up that removes files from file system,
+ * deletes data related to FileId and releases FileId identifier.
+ * @param aServiceId
+ * @param aContentId
+ * @return Error code, KErrNone if no errors, otherwise one of the system wide error codes.
+ * KErrNotFound if download was not found from VOD DL Manager, file might still be in
+ * My Videos.
+ */
+ TInt CancelDownloadL(
+ TUint32 aServiceId,
+ TUint32 aContentId );
+
+ /**
+ * Get the mpx media object by id.
+ * @param aMpxIds
+ */
+ void GetMediaByMpxIdReqL( RArray<TUint32>& aMpxIds );
+
+ /**
+ * Check media's download state and do routines if necessary.
+ *
+ * @param aMediaId media object id which to check.
+ */
+ void CheckMediaStateL( TUint32 aMediaId );
+
+ /**
+ * Append the given content to download list.
+ *
+ * List takes ownership of given object.
+ *
+ * @param aContent Content
+ */
+ void AppendToDownloadList( CIptvMediaContent* aContent );
+
+ /**
+ * Remove the given content from download list.
+ *
+ * Pointed object is deleted.
+ *
+ * @param aContent Content
+ */
+ void RemoveFromDownloadList( CIptvMediaContent* aContent );
+
+ /**
+ * Find a content by url from download list.
+ */
+ CIptvMediaContent* SearchFromDownloadList( const TDesC& aUri );
+
+ /**
+ * Find a content by mpx id from download list.
+ */
+ CIptvMediaContent* SearchFromDownloadList( const TUint32 aMpxId );
+
+ /**
+ * Find a content by service and content id from download list.
+ */
+ CIptvMediaContent* SearchFromDownloadList( const TUint32 aServiceId,
+ const TUint32 aContentId );
+
+// 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* /*aMsg*/, TInt /*aErr*/ );
+
+ /**
+ * 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
+ * All clients should implement this callback
+ * @param aCommandResult result of the command, NULL if error
+ * @param aError error code
+ */
+ void HandleCommandComplete( CMPXCommand* /*aCommandResult*/, TInt /*aError*/ );
+
+ /**
+ * Marks given items as watched to MPX col.
+ *
+ * @param aArray media object array to be processed.
+ */
+ void MarkItemsAsWatchedL( CMPXMediaArray* aArray );
+
+ /**
+ * Sets given items last play pos to MPX col.
+ *
+ * @param aArray media object array to be processed.
+ */
+ void WriteLastPlayPosL( CMPXMediaArray* aArray );
+
+private:
+
+ /**
+ * Starts download of given item.
+ *
+ * @param aAddress Address of the downloaded content
+ * @param aName Name of the downloaded content
+ * @param aIapId Iap id for the download
+ * @param aIsReadOnlyIap Is the give iap read-only
+ * @param aUserName UserName of the downloaded content
+ * @param aPassword Password of the downloaded content
+ * @return System-wide error code
+ */
+ TInt DoDownloadL( const TDesC& aAddress,
+ const TDesC& aName,
+ TUint32 aIapId,
+ TBool aIsReadOnlyIap,
+ const TDesC& aUserName,
+ const TDesC& aPassword );
+
+ /**
+ * Links the mpx media objects to contents.
+ *
+ * @param aArray Mpx media array containing the data.
+ */
+ void LinkMediaObjectsL( CMPXMediaArray* aArray );
+
+ /**
+ * Sets the mpx media object to downloaded content
+ * item and refreshes the content view, if visible.
+ *
+ * @param aMedia Mpx media containing the data.
+ */
+ void SearchAndAddMpxMediaL( CMPXMedia* aMedia );
+
+ /**
+ * Calls HandleSingleCollectionMessageL() for every message.
+ *
+ * @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 ExplodeCollectionMessagesL( CMPXMessage* aMsg, TInt aErr );
+
+ /**
+ * Handles one sinlgle message
+ *
+ * @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 HandleSingleCollectionMessageL( CMPXMessage* aMsg, TInt aErr );
+
+ /**
+ * HandleSingleCollectionMessage's implementation.
+ *
+ * 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 DoHandleSingleCollectionMessageL( CMPXMessage* aMsg, TInt aErr );
+
+ /**
+ * Handle mpx item changed -collection message
+ *
+ * @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 HandleMpxItemChangedL( CMPXMessage* aMsg, TInt aErr );
+
+ /**
+ * Copy ecg data to mpx database
+ *
+ * @param aContent Source content, where copy values from.
+ * @param aMedia Target media object, where to copy the values.
+ */
+ void CopyEcgDataToMpxColL( CIptvMediaContent *aContent, CMPXMedia *aMedia );
+
+ /**
+ * Get CMPXMedia.
+ *
+ * @param aMediaId media object id, which to get.
+ * @return CMPXMedia object. Ownership not transferred.
+ */
+ CMPXMedia* GetMpxMediaFromList( TUint32 aMediaId );
+
+ CVcxNsScheduledDownloadMpxClient( MVcxNsMpxClientObserver& aObserver,
+ CIptvVodContentClient& aContentClient,
+ TUint32 aServiceId );
+
+ void ConstructL();
+
+private:
+
+ /**
+ * MMPXCollectionUtility*
+ */
+ MMPXCollectionUtility* iCollectionUtility;
+
+ /**
+ * The currently / previously downloaded contents.
+ */
+ RPointerArray<CIptvMediaContent> iDownloadedContents;
+
+ /**
+ * The downloaded content's mpx items.
+ */
+ RPointerArray<CMPXMedia> iDownloadedMedias;
+
+ /**
+ * MVcxNsMpxClientObserver
+ */
+ MVcxNsMpxClientObserver& iObserver;
+
+ /**
+ * CIptvVodContentClient
+ */
+ CIptvVodContentClient& iContentClient;
+
+ /**
+ * Current service id
+ */
+ TUint32 iServiceId;
+
+ };
+
+#endif // VCXNSDOWNLOADCLIENTHANDLER_H_