diff -r 000000000000 -r 71ca22bcf22a mmfenh/enhancedmediaclient/Client/src/Components/ClientFileSource/ClientFileSource.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmfenh/enhancedmediaclient/Client/src/Components/ClientFileSource/ClientFileSource.h Tue Feb 02 01:08:46 2010 +0200 @@ -0,0 +1,233 @@ +/* +* 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 ClientFileSource class. +* +*/ + + +#ifndef C_CCLIENTFILESOURCE_H +#define C_CCLIENTFILESOURCE_H + +#include +#include +#include + +#include "SourceBase.h" +#include "AsyncAO.h" +#include "FileDataSourceCommon.h" + +class MCustomCommand; + +namespace multimedia + { + class CEventNotifier; + + + /** + * Implements the ClientSide Source for the File Source. + * Provides functionality to the Clients to query attributes + * from the ServerSide source + * @lib EnhancedMediaClient.lib + * @since S60 v3.2 + */ + class CClientFileSource : public CSourceBase, + public MFileSource, + public MAsyncAOObserver + { + public: + /** + * Function to Create the Object. + */ + CClientFileSource(); + /** + * Destructor. + */ + ~CClientFileSource(); + + /** + * 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(); + + // 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 File 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 MFileSource begins + /** + * From MFileSource. + * Opens the Source with the mimetype and HeaderData + * + * @since S60 v3.2 + * @param aFileName FileName to be Opened by the Source + * @param aMimeType MimeType used to Configure the Source. + */ + TInt Open(TDesC& aFileName, TDesC8& aMimeType ); + /** + * From MFileSource. + * Returns the BitRate of the Source + * the Source is initialized. + * + * @since S60 v3.2 + * @param aRate Returns the BitRate of the Source. + */ + TInt GetBitRate( TUint& aRate ); + /** + * From MFileSource. + * Returns the FileName associated with the Source + * 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 GetFileName(TPtr& aFileName); + // From MFileSource 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 + + // From MAsyncAOObserver begins + /** + * From MAsyncAOObserver. + * Callback from the Source for the Events from the Source Side + * @since S60 v3.2 + * @param aError Error Code from the ServerSide Source. + */ + void Event( TInt aError ); + // From MAsyncAOObserver ends + private: + void DoBitRateChanged( TUint aBitRate ); + private: + // Variable to Hold the Mime Type sent by the Client + HBufC8* iMimeType; + // Variable to Hold the FileName sent by the Client + HBufC* iFileName; + // BitRate from the Source Side + TUint iBitRate; + // FileSize from the Source Side + TUint iFileSize; + // Variable to determine if the ServerSource exists + TBool iServerSourceExists; + // Handle to send messages to the Server Side Source + MCustomCommand* iCustomCommand; + // Handle Identifying the Server Side Source + TMMFMessageDestination iSourceHandle; + // Server Side Source State + CMultimediaDataSource::TState iState; + // Event Notifier that notifies the Client + CEventNotifier* iEventNotifier; + // Active Object to get Events from the Server Side Source + CAsyncAO* iAsyncEventAO; + // Event Package sent to the Server Side. + TFileDataSourceEventPckgBuf iEventPckg; + }; + } // namespace multimedia + +#endif // C_CCLIENTFILESOURCE_H + +// End of file