mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/DownloadGateway.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/DownloadGateway.h Wed Sep 01 12:23:00 2010 +0100
@@ -0,0 +1,182 @@
+/*
+* 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: Header of DownloadGateway class.
+*
+*/
+
+
+#ifndef DOWNLOADGATEWAY_H
+#define DOWNLOADGATEWAY_H
+
+#include <e32base.h>
+#include <downloadmgrclientapiext.h>
+#include <ProgDLSource.h>
+
+namespace multimedia
+ {
+
+ /**
+ * Observer that sends browser events to the Client
+ * @lib EnhancedMediaClient.lib
+ * @since S60 v3.2
+ */
+ class MDownloadGatewayObserver
+ {
+ public:
+ virtual void Event(MProgDLSource::TDownloadStatus aStatus) = 0;
+ virtual void MoveFileComplete(TInt aError) = 0;
+ };
+
+ /**
+ * Implements the Gateway from which the Clients talk to the DownloadMgr.
+ * Provides functionality to the Clients to query attributes
+ * from the Browser
+ * @lib EnhancedMediaClient.lib
+ * @since S60 v3.2
+ */
+ class CDownloadGateway : public MHttpDownloadMgrObserver
+ {
+ public:
+ /**
+ * Function to Create the Object.
+ */
+ CDownloadGateway();
+ /**
+ * Destructor.
+ */
+ ~CDownloadGateway();
+
+ /**
+ * Initialize the Gateway with the Client UID.
+ * Here it connect to the DownloadMgr Server.
+ * @since S60 v3.2
+ * @param aClientUid Client which wants to connect.
+ */
+ TInt Initialize(TUid aClientUid);
+ /**
+ * Calls Move on the DownloadMgr for the TransactionID
+ * @since S60 v3.2
+ * @param aId TransactionID for which the File has to be moved.
+ * @param aDestFileName Full Pathname where the file needs to be moved.
+ */
+ TInt MoveFile( TInt aId, const TDesC& aDestFileName );
+ /**
+ * Called by the Client which wants to Connect to the Download
+ * @since S60 v3.2
+ * @param aId TransactionID for which the File has to be moved.
+ * @param aObserver Observer where the Client wants the Callbacks
+ * @param aAppUid UID for the App which Connects.
+ */
+ TInt ConnectToDownload(TInt aId, MDownloadGatewayObserver& aObserver, TUid aAppUid);
+ /**
+ * Disconnect from the Download
+ * Here it connect to the DownloadMgr Server.
+ * @since S60 v3.2
+ * @param aId DownloadID from which the Client wants to Disconnect.
+ */
+ TInt DisconnectFromDownload(TInt aId);
+ /**
+ * Gets the Current Downloaded Size of the Download
+ * @since S60 v3.2
+ * @param aId TransactionID of the Download which the FileSize is queried.
+ * @param aSize Size of the Download returned
+ */
+ TInt GetCurrentSize( TInt aId, TUint& aSize );
+ /**
+ * Total Size of the File which is being downloaded
+ * Here it connect to the DownloadMgr Server.
+ * @since S60 v3.2
+ * @param aId TransactionID of the Download which the FileSize is queried.
+ * @param aSize Total Size of the File being Downloaded returned
+ */
+ TInt GetDownloadSize( TInt aId, TUint& aSize );
+ /**
+ * Gets the Download Status for a particular Download
+ * @since S60 v3.2
+ * @param aId TransactionID of the Download which the FileSize is queried.
+ * @param aStatus Download Status for the Download
+ */
+ TInt GetDownloadStatus(TInt aTxId, MProgDLSource::TDownloadStatus& aStatus);
+ /**
+ * Cancelling a Particular Download
+ * @since S60 v3.2
+ * @param aId TransactionID of the Download to be deleted
+ */
+ TInt DeleteDownload(TInt aId);
+ /**
+ * Resuming a Paused Download
+ * @since S60 v3.2
+ * @param aId TransactionID of the Download to be Resumed
+ */
+ TInt ResumeDownload(TInt aId);
+ /**
+ * Queries the MimeType of the File from the DownloadMgr
+ * @since S60 v3.2
+ * @param aId TransactionID of the Download to be queried
+ * @param aMimeType MimeType returned from the Browser.
+ */
+ TInt GetMimeType(TInt aId, TDes8& aMimeType);
+ /**
+ * Tells the Browser if the Download is being Progressively Played
+ * @since S60 v3.2
+ * @param aId TransactionID of the Dowload to be Resumed
+ * @param aMode Whether the Mode is True or False.
+ */
+ TInt SetProgressiveMode(TInt aId, TBool aMode);
+ /**
+ * Before Calling Move we need to Call this to set the Local FileName
+ * @since S60 v3.2
+ * @param aId TransactionID of the Dowload for setting the FileName
+ * @param aFileName Name to be Set
+ */
+ TInt SetLocalFileName( TInt aId, TDesC& aFileName );
+ /**
+ * Gets the Local FileName from the DownloadMgr
+ * @since S60 v3.2
+ * @param aId TransactionID of the Dowload to be Resumed
+ * @param aFileName Gets the FileName from the DownloadMgr
+ */
+ TInt GetLocalFileName(TInt aId, TDes& aFileName );
+ // From MhttpDownloadMgrObserver
+ /**
+ * From MhttpDownloadMgrObserver.
+ * Callback from the DownloadManager notifying Client Events.
+ * @since S60 v3.2
+ * @param aDownload Download for which the Event is meant
+ * @param aEvent Actual Event
+ */
+ void HandleDMgrEventL( RHttpDownload& aDownload, THttpDownloadEvent aEvent );
+ // MhttpDownloadMgrObserver Ends
+
+ private:
+ // The Observer where we need to forward the Browser events
+ MDownloadGatewayObserver* iObserver;
+ // Download Manager instance to which we connect
+ RHttpDownloadMgrApiExt iDownloadMgr;
+ // Download for which we connect
+ RHttpDownload* iDownload;
+ // Status if we are connected
+ TBool iDMgrConnected;
+ // Previous DLMgr Event
+ THttpDownloadEvent iPrevEvent;
+ // Current Download ID
+ TInt iDownloadId;
+ // Current Download Status
+ MProgDLSource::TDownloadStatus iDownloadStatus;
+ };
+ } // namespace multimedia
+
+#endif // DOWNLOADGATEWAY_H
+
+// End of file