diff -r ebf79c79991a -r 5e8b14bae8c3 mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/ClientProgDLSource.h --- a/mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/ClientProgDLSource.h Fri Jun 25 17:36:03 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,383 +0,0 @@ -/* -* 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: Definition of the ClientProgDLSource class. -* -*/ - - -#ifndef C_CCLIENTAUDIOPROGDLSOURCE_H -#define C_CCLIENTAUDIOPROGDLSOURCE_H - -#include -#include -#include -#include -#include - -#include "SourceBase.h" -#include "TransferRateMonitor.h" -#include "ProgDLSourceCustomCommands.h" -#include "EventAO.h" -#include "DownloadGateway.h" - - -class MCustomCommand; - -namespace multimedia - { - - class CEventNotifier; - - class MTransferRateMonitor; - - /** - * Implements the ClientSide Source for the ProgDL Source. - * Provides functionality to the Clients to query attributes - * from the ServerSide source - * @lib EnhancedMediaClient.lib - * @since S60 v3.2 - */ - class CClientProgDLSource : public CSourceBase, - public MProgDLSource, - public MDownloadGatewayObserver, - public MTransferRateObserver, - public MSourceStateObserver - { - public: - /** - * Function to Create the Object. - */ - CClientProgDLSource(); - /** - * Destructor. - */ - ~CClientProgDLSource(); - /** - * Post Contructor. This is to Support the new type of Construction - * of the Object. Notice there is no Two phased Constructor in this class - */ - TInt PostConstructor(); - - /** - * Associates the DownloadGateway with the Progressive Download Source. - * This Gateway class sends all the Browser Events to the Source. - */ - TInt SetDownloadGateway(CDownloadGateway* aDownloadGateway); - - // From MControl begins - /** - * From MControl. - * Adds the Observer to this Object - * @since S60 v3.2 - * @param aObserver Client which set the Observer. - */ - TInt AddObserver( MControlObserver& aObserver ); - /** - * From MControl. - * Removes the Observer to this Object - * @since S60 v3.2 - * @param aObserver Client which set the Observer. - */ - TInt RemoveObserver( MControlObserver& aObserver ); - /** - * From MControl. - * Returns the Type of this Object. - * request and that it is now outstanding - * @since S60 v3.2 - */ - TUid Type(); - /** - * From MControl. - * Returns the Control Type of this Object. - * - * @since S60 v3.2 - */ - TControlType ControlType(); - // From MControl ends - - // From MSourceControl begins - /** - * From MSourceControl. - * Returns the Size in Bytes of the Source. - * Since this is ProgDL Source, the size represents - * the file size which will be passed by the Client - * to the Source - * @since S60 v3.2 - * @param aSize Size returned by the Source. - */ - TInt GetSize( TUint& aSize ); - /** - * From MSourceControl. - * Returns the Mime Type of the Data for which - * the Source is initialized. - * @since S60 v3.2 - * @param aMimeType MimeType returned by the Source. - */ - TInt GetMimeType( TDes8& aMimeType ); - /** - * From MSourceControl. - * Closes the Source. - * - * @since S60 v3.2 - */ - TInt Close(); - // From MSourceControl ends - - // From MProgDLSource begins - /** - * From MProgDLSource. - * Opens the Source with the FileName and TransactionID - * Here it connects to the Browser and attaches to the - * download corresponding to the TransactionID - * - * @since S60 v3.2 - * @param aFileName FileName to be Opened by the Source - * @param aDLTxId TransactionID to connect to the Browser - */ - TInt Open( const TDesC& aFileName,TInt32 aDLTxId ); - /** - * From MProgDLSource. - * Moves the Finished Download to the new Location. This is done - * by calling the browser which is invoked through the Gateway. - * - * @since S60 v3.2 - * @param aFileName FileName to be Opened by the Source - */ - TInt MoveFile(const TDesC& aDestFileName ); - /** - * From MProgDLSource. - * Cancels the Ongoing Download - * - * @since S60 v3.2 - */ - TInt CancelDownload(); - /** - * From MProgDLSource. - * Resumes the Paused download - * - * @since S60 v3.2 - */ - TInt ResumeDownload(); - /** - * From MProgDLSource. - * Gets the Current FileSize from the Browser which is getting - * Downloaded - * - * @since S60 v3.2 - * @param aSize Size of the File already downloaded - */ - TInt GetCurrentFileSize( TUint& aSize ); - /** - * From MProgDLSource. - * Gets the Expected FileSize from the Browser which is getting - * Downloaded - * - * @since S60 v3.2 - * @param aSize Final Size of the File - */ - TInt GetExpectedFileSize( TUint& aSize ); - /** - * From MProgDLSource. - * Return the Current Download Status of the Download - * - * @since S60 v3.2 - */ - TDownloadStatus GetDownloadStatus(); - /** - * From MProgDLSource. - * Queries if the Download is Complete from the Gateway - * - * @since S60 v3.2 - * @param aBool Download Complete Status - */ - TInt IsDownloadComplete(TBool& aBool); - /** - * From MProgDLSource. - * Gets the Percentage of the File already Downloaded - * - * @since S60 v3.2 - * @param aPercent Percentage of the File downloaded - */ - TInt GetPercentageDownloaded(TUint& aPercent); - /** - * From MProgDLSource. - * Gets the Percentage of the File Buffered before Playback starts. - * This query is to the ServerSide Source which is in Buffering State - * - * @since S60 v3.2 - * @param aPercent Percentage of Data Buffered before Playback starts. - */ - TInt GetPercentageBuffered(TUint& aPercent); - /** - * From MProgDLSource. - * This is the DownloadRate that tells you how fast data is downloaded - * by the Download Manager - * - * @since S60 v3.2 - * @param aRate Rate at which Data is Downloaded. - */ - TInt GetDownloadingRate(TUint& aRate); - /** - * From MProgDLSource. - * Returns the BitRate of the Data played from the Source - * - * @since S60 v3.2 - * @param aRate BitRate of the Data Played from the Source - */ - TInt GetBitRate(TUint& aRate); - /** - * From MProgDLSource. - * Returns the FileName associated with the Download. - * This value is set by the Client when it calls Open(). - * - * @since S60 v3.2 - * @param aFileName FileName to be Opened by the Source - */ - TInt FileName(TPtr& aFileName); - // From MProgDLSource ends - - // From MDownloadGatewayObserver - /** - * From MDownloadGatewayObserver. - * The Gateway Observer sends event which it receives from the - * Download Manager. - * - * @since S60 v3.2 - * @param aStatus Current Download Status - */ - void Event(TDownloadStatus aStatus); - /** - * From MDownloadGatewayObserver. - * Notifies the Client that the Move of the File Complete - * with an ErrorCode returned. - * - * @since S60 v3.2 - * @param aError Move Complete with this ErrorCode. - */ - void MoveFileComplete(TInt aError); - // MDownloadGatewayObserver Ends - - - // From CSourceBase begins - /** - * From CSourceBase. - * Callback from the StreamControl when the Source is Created - * - * @since S60 v3.2 - * @param aCustomCommand Custom Command handle to send message to the Source - * @param aSourceHandle Handle Identifying the Source - */ - void ServerSourceCreated( MCustomCommand& aCustomCommand, - TMMFMessageDestination& aSourceHandle ); - /** - * From CSourceBase. - * Callback from the StreamControl when the ServerSource is Deleted - * - * @since S60 v3.2 - */ - void ServerSourceDeleted(); - /** - * From CSourceBase. - * Returns the Content Protection information to the Stream Control - * Currently returns KErrNotSupported - * @since S60 v3.2 - */ - TBool IsEncrypted(); - /** - * From CSourceBase. - * Returns the SourceUID - * - * @since S60 v3.2 - */ - TUid GetSourceUid(); - /** - * From CSourceBase. - * Returns the Header Data passed when the Client calls Open - * Currently return KErrNotSupported - * @since S60 v3.2 - */ - TInt GetHeaderData(TPtr& aPtr); - // From CSourceBase ends - - //MTransferRateObserver begins - /** - * From MTransferRateObserver. - * Callback from the TransferRate Monitor that the Rate Changed - * @since S60 v3.2 - */ - void TransferRateChanged(); - /** - * From MTransferRateObserver - * Method from the Transfer Rate Monitor to query CurrentFile Size. - * @since S60 v3.2 - * @param aCurrentSize Current File Size returned to the Caller - */ - TInt GetCurrentSize( TUint& aCurrentSize ); - // MTransferRateObserver ends - - // MSourceStateObserver begins - /** - * From MSourceStateObserver. - * Callback from the Active Object that the Source State changed. - * @since S60 v3.2 - */ - void SourceStateChanged(); - // MSourceStateObserver ends - - private: - // Variable to determine if the ServerSource exists - TBool iServerSourceExists; - - // FileSize from the Client - TUint iSourceSize; - // Current Size from the Browser - TInt iCurrentSize; - // Destination File Name - TFileName iDestFileName; - - // Handle to send messages to the Server Side Source - MCustomCommand* iCustomCommand; - // Handle Identifying the Server Side Source - TMMFMessageDestination iSourceHandle; - - // Current State of the Source - TPckgBuf iStatePckg; - // Observer monitoring the State change event - CEventAO* iStateEvent; - // Current State of the Source - CMultimediaDataSource::TState iSourceState; - // Event Notifier to notify Clients - CEventNotifier* iEventNotifier; - // Storing the Download Complete Status - TBool isDownloadComplete; - // Storing the Download Paused status - TBool isDownloadPaused; - // Storing the DownloadID/Transaction ID - TInt32 iDownloadId; - // FileName passed to Open the Source - HBufC* iFileName; - // Gateway Attached to this Source to talk to Browser - CDownloadGateway* iDownloadGateway; - // Transfer Rate monitor - CTransferRateMonitor* iMonitor; - // Current Size of the File in Bytes. - TUint iCurrentBytes; - // Is the Playback in Progressive Mode - TBool iProgressiveMode; - }; - } // namespace multimedia - -#endif // CLIENTAUDIOPROGDLSOURCE_H - -// End of file