diff -r 000000000000 -r 71ca22bcf22a 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 Tue Feb 02 01:08:46 2010 +0200 @@ -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 +#include +#include + +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