diff -r 6369bfd1b60d -r 08b5eae9f9ff upnpmpxplugins/upnpplaybackplugins/inc/upnptrack.h --- a/upnpmpxplugins/upnpplaybackplugins/inc/upnptrack.h Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,372 +0,0 @@ -/* -* 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 "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 containing and obtaining music track-specific -* data from media server -* -*/ - - - - - - -#ifndef C_UPNPTRACK_H -#define C_UPNPTRACK_H - -// INCLUDES -#include -#include "upnpitemresolverobserver.h" -#include "upnpresourceselector.h" - -// FORWARD DECLARATIONS -class TMPXAttribute; -class TMPXAttributeData; -class MUPnPAVController; -class MUPnPAVBrowsingSession; -class MUPnPTrackObserver; -class MMPXPlaybackPluginObserver; -class CUpnpItem; -class MUPnPItemResolver; - -// CONSTANTS -const TInt KMaxElementSize = 256; - - -/** - * A helper class for containing and obtaining music track-specific data - * from media server - * - * @lib upnpmusicplugins.lib - * @since S60 v3.1 - */ -class CUPnPTrack - : public CBase - , public MUPnPItemResolverObserver - { - -public: // datatypes - - /** - * Defines direction of playback - * - * EDirectionRemote - Used in local to remote and remote to remote - * playback cases - * EDirectionLocal - Used only in remote to local case. - * - */ - enum TPlaybackDirection - { - EDirectionRemote = 0, - EDirectionLocal - }; -public: - - /** - * static constructor - * - * @param aAvController AVController - * @return a new CUPnPTrack instance - * @since Series 60 3.1 - */ - static CUPnPTrack* NewL( MUPnPAVController& aAvController ); - - /** - * Destructor - * - * @since Series 60 3.1 - */ - virtual ~CUPnPTrack(); - - /** - * Parse and saves the song path from given descriptor - * - * @param aCodedTrackUri track URI that may be coded - * @param atrackObserver observer to notify when resolve is complete - * @param aPlaybackDirection direction of playback - * @since Series 60 3.1 - */ - void ResolveURIL( const TDesC& aCodedTrackUri, - MUPnPTrackObserver& aTrackObserver, - TPlaybackDirection aPlaybackDirection ); - - /** - * Returns the original URI given in initialisation - * - * @return TDesC URI - * @since Series 60 3.1 - */ - const TDesC& URI() const; - - /** - * Returns the true UPNP URI of a remote track - * - * @return TDesC8 URI - * @since Series 60 3.1 - */ - const TDesC8& UpnpURI() const; - - /** - * Returns the remote upnp item that represents the track - * - * @return CUpnpItem the item reference - * @since Series 60 3.1 - */ - const CUpnpItem& UpnpItem() const; - - /** - * Returns the file path of local item - * - * @return TDesC file path - * @since Series 60 3.1 - */ - const TDesC& FilePath() const; - - /** - * Return location of track. ETrue = remote. EFalse = local - * - * @return TBool location of track - * @since Series 60 3.1 - */ - TBool IsRemote() const; - - /** - * Get metadata information for track from media server - * - * @param aAttrs list of wanted media propeties - * @param aObs the plugin observer that will receive the metadata - * @since Series 60 3.1 - */ - void GetMetaDataL( const TArray& aAttrs, - MMPXPlaybackPluginObserver& aObs ); - - /** - * Delivers media changed event to playback framework - * @param aObs the plugin observer - */ - void SendMediaChangedEventL( - MMPXPlaybackPluginObserver& aObs ); - - /** - * current track duration - * @return track duration in milliseconds - */ - TInt TrackDuration(); - - /** - * overrides current track duration. Normally a track can provide - * duration information for current remote track. However sometimes - * the data is missing. In this case it can be set using this method. - * @param aMilliseconds the duration in milliseconds - */ - void SetTrackDuration( TInt aMilliseconds ); - - /** - * - */ - void Delete(); - -protected: // MUPnPItemResolverObserver - - /** - * See MUPnPItemResolverObserver - */ - void ResolveComplete( const MUPnPItemResolver& aResolver, TInt aError ); - -private: - - /** - * Default constructor - * - * @param aAvController AVController - * @since Series 60 3.1 - */ - CUPnPTrack( MUPnPAVController& aAvController ); - - /** - * 2nd phase constructor - * - * @since Series 60 3.1 - */ - void ConstructL(); - - /** - * Parse and save HttpURI, media server id and object id from - * given descriptor - * - * @since Series 60 3.1 - * @param aSong descriptor to be parsed - */ - void ParsePiecesL( const TDesC& aSong ); - - /** - * See MUPnPAVBrowsingSessionObserver - * - * @since Series 60 3.1 - */ - void BrowseResponseL( const TDesC8& aBrowseResponse, TInt aError ); - - /** - * Starts a browsing session within the object - */ - void StartBrowsingSessionL(); - - /** - * Stops a browsing session within the object - */ - void StopBrowsingSession(); - - /** - * Delivers metadata to observer - * @param aAttrs list of wanted media propeties - * @param aObs the plugin observer that will receive the metadata - * @param aError error code to be delivered to client - */ - void DeliverMedataL( const TArray& aAttrs, - MMPXPlaybackPluginObserver& aObs, TInt aError = KErrNone ); - - /** - * Fills item metadata into given MediaL object - * @param aMedia the MPX media object to fill metadata into - * @param aAttrs list of metadata elements to fill - */ - void FillMediaFromItemL( CMPXMedia& aMedia, - const TArray& aAttrs ); - - /** - * Tests if given attribute exists in the attribute array - * returns true if it is found. - * @param aAttrs the attribute array - * @param aAttrData the attribute to look for - * @return ETrue if it was found, EFalse otherwise - */ - TBool Exists( const TArray& aAttrs, - const TMPXAttributeData& aAttrData ) const; - - /** - * A helper method that converts text from 8-bit to 16-bit. - * Note that a member buffer is used that has static length. - */ - const HBufC16* CUPnPTrack::To16LC( const TDesC8& aText ); - -private: // data - - /** - * Defines location of track - * - * @since Series 60 3.1 - */ - enum TTrackLocation - { - ETrackLocationLocal = 0, - ETrackLocationRemote - }; - - /** - * Defines track state - * - * @since Series 60 3.2 - */ - enum TTrackState - { - EStateIdle, - EStateResolving, - EStateSelfDestruct, - EStateReady - }; - - - /** - * Location of track - */ - TTrackLocation iTrackLocation; - - /** - * URI for local track - */ - HBufC* iOriginalURI; - - /** - * Media server name - */ - HBufC8* iMediaServer; - - /** - * Object id - */ - HBufC8* iObjectId; - - /** - * The AV Controller resource - */ - MUPnPAVController& iAvController; - - /** - * The rendering session - */ - MUPnPAVBrowsingSession* iBrowsingSession; - - /** - * Track observer during resolving phase - */ - MUPnPTrackObserver* iTrackObserver; - - /** - * Observer for metadata queries - * Stored in case metadata is not ready yet when queried - */ - MMPXPlaybackPluginObserver* iMetadataObserver; - - /** - * Attributes in metadata query - */ - RArray iQueriedAttributes; - - /** - * temp buffer used in 8->16 -bit conversion - */ - TBuf16 iTempBuf; - - /** - * track duration in milliseconds (from some other source) - */ - TInt iTrackDuration; - - /** - * Resolver for remote or local item (Owned). - */ - MUPnPItemResolver* iItemResolver; - - /** - * Selectors for remote item. - */ - TUPnPSelectDefaultResource iDefaultSelector; - - /** - * Selectors for local item. - */ - TUPnPSelectFirstResource iFirstSelector; - - /** - * Tells is resolve item completed. - */ - TBool iIsItemSolved; - - /** - * Current track state - */ - TTrackState iState; - }; - - -#endif // C_UPNPTRACK_H