diff -r 16e4b9007960 -r f5508c13dfe0 bluetoothappprofiles/avrcp/mediabrowseapi/public/remconmediabrowsetargetbase.h --- a/bluetoothappprofiles/avrcp/mediabrowseapi/public/remconmediabrowsetargetbase.h Wed Oct 13 13:15:31 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,217 +0,0 @@ -// Copyright (c) 2008-2009 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: -// - - - -/** - @file - @publishedAll - @released -*/ - -#ifndef REMCONMEDIABROWSETARGETBASE_H -#define REMCONMEDIABROWSETARGETBASE_H - -#include -#include -#include -#include -#include -#include -#include - -class RRemConGetFolderItemsResponse; -class RRemConGetItemAttributesResponse; -class RRemConGetPathResponse; -class TRemConMessageQueue; -/** -This interface enables the client to present a heirarchical view -of the local media library for browsing by a remote entity. - -The view is a virtual filesystem and does not need to correspond -directly to any structure on local storage. It could for example -map onto a database of media content. - -Each item in the media library is identified by a UID. At a -minimum this must uniquely identify an element within a folder. -For clients that support it the UID can be persistant accross -the entire virtual filesystem. In this case a media library -state cookie is used to ensure that that state is consistent -between the client and the remote device. - -This interface does not have NewL()/NewLC, so the client should -use the object CRemConDatabaseAwareMediaBrowseTarget or -CRemConDatabaseUnawareMediaBrowseTarget to use its exported functions. - -This class is only to be used by classes currently derived from it. - -@see CRemConDatabaseAwareMediaBrowseTarget -@see CRemConDatabaseUnawareMediaBrowseTarget -*/ -NONSHARABLE_CLASS(CRemConMediaBrowseTargetBase) : public CRemConInterfaceBase, public MRemConInterfaceIf - { -protected: - CRemConMediaBrowseTargetBase(CRemConInterfaceSelector& aInterfaceSelector, - MRemConDatabaseAwareMediaLibraryBrowseObserver& aMlObserver, - MRemConDatabaseAwareNowPlayingBrowseObserver& aNpObserver, - TUint16 aMediaLibraryStateCookie); - - CRemConMediaBrowseTargetBase(CRemConInterfaceSelector& aInterfaceSelector, - MRemConDatabaseUnawareMediaLibraryBrowseObserver& aMlObserver, - MRemConDatabaseUnawareNowPlayingBrowseObserver& aNpObserver); - - virtual ~CRemConMediaBrowseTargetBase(); - - virtual void BaseConstructL(TBool aSearchSupported); - - void DoFolderListing(const TArray& aFolderListing, - TUint16 aMediaLibraryStateCookie, - TInt aResult); - - void DoFolderUpResult(TUint aItemCount, TInt aResult); - void DoFolderDownResult(TUint aItemCount, TInt aResult); - - void DoGetPathResult(TUint aItemCount, - TUint16 aMediaLibraryStateCookie, - TInt aResult); - - void DoSearchResult(TUint aNumberItemsFound, - TUint16 aMediaLibraryStateCookie, - TInt aResult); - - void DoMediaLibraryStateChange(TUint16 aMediaLibraryStateCookie); - - void DoFolderItemResult(const TRemConItemUid& aFolderID, - const TDesC8& aFolderName, - TFolderItemType aFolderType, - TFolderItemPlayable aPlayable, - const TArray& aAttributes, - TInt aResult); - - void DoMediaElementItemResult(const TRemConItemUid& aMediaID, - const TDesC8& aMediaName, - TMediaItemType aMediaType, - const TArray& aAttributes, - TInt aResult); - -private: // From CRemConInterfaceBase - TAny* GetInterfaceIf(TUid aUid); - -private: // From MRemConInterfaceIf - void MrcibNewMessage(TUint aOperationId, - const TDesC8& aData); - -private: // Utility - void ProcessGetFolderItems(const TDesC8& aData); - void ProcessChangePath(const TDesC8& aData); - void ProcessGetItemAttributes(const TDesC8& aData); - void ProcessSearch(const TDesC8& aData); - void ProcessGetPath(const TDesC8& aData); - void ProcessMediaLibraryStateCookieUpdate(const TDesC8& aData); - - void SendGetItemAttributesResponse(TInt aResult, const TDesC8& aData); - void SendGetFolderItemsResponse(TInt aResult, const TDesC8& aData); - void SendChangePathResponse(TUint aItemCount, TInt aResult); - void SendInternalNotificationResponse(TRemConMessageSubType aMsgSubType); - void SendNotificationResponse(TRemConMessageSubType aMsgSubType); - void SendSearchResponse(TInt aResult, TUint aNumberItemsFound, TUint16 aMediaLibraryStateCookie); - void SendMediaLibraryStateCookieUpdateResponse(TUint16 aMediaLibraryStateCookie); - - static TInt NextMessageCb(TAny* aThis); - void DoNextMessage(); - - static TInt NextItemCallBack(TAny* aThis); - void RequestNextItem(); - void DoItemComplete(TInt aResult); - - void SendError(TUint8 aPduId, - TUint aOperationId, - TInt aError); - - // Used for Gia - TInt ItemAttributesResult(const TArray& aAttributes); - TInt DoAttributeValue(TMediaAttributeId aAttributeId, const TDesC8& aAttributeData); - void DoAllAttributesCompleted(TInt aResult); - - void AddToOperationQueue(TUint8 aPduId, - TInt aOperationId, - const TDesC8& aData); - TInt ParseGetItemAttributesRequest(const TDesC8& aData, - TRemConFolderScope& aScope, - TRemConItemUid& aItemUid, - TUint16& aMediaLibraryStateCookie); - void ProcessMediaElementItemResult(const TRemConItemUid& aMediaID, - const TDesC8& aMediaName, - TMediaItemType aMediaType, - const TArray& aAttributes, - TInt aResult); - void ProcessFolderItemResult(const TRemConItemUid& aFolderID, - const TDesC8& aFolderName, - TFolderItemType aFolderType, - TFolderItemPlayable aPlayable, - TInt aResult); - void ProcessGetItemAttributesResult( - const TArray& aAttributes, - TInt aResult); - - inline TBool DatabaseAware() const; - -private: - // Unowned - CRemConInterfaceSelector& iInterfaceSelector; - - MRemConDatabaseAwareMediaLibraryBrowseObserver* iRcdamlbo; - MRemConDatabaseUnawareMediaLibraryBrowseObserver* iRcdumlbo; - - MRemConDatabaseAwareNowPlayingBrowseObserver* iRcdanpbo; - MRemConDatabaseUnawareNowPlayingBrowseObserver* iRcdunpbo; - - // Owned - CAsyncCallBack* iNextMessageCallBack; - CAsyncCallBack* iNextItemCallBack; - - RBuf8 iOutBuf; - - TUint16 iMediaLibraryStateCookie; - - TBool iInProgress; // used internally to see if any operation is in progress - TRemConMessageQueue* iMsgQueue; // used to queue messages if another operation is in progress - - RArray iMediaAttributeIds; // used for Gfl and Gia to store requested attributes - TMediaAttributeIter iAttributeIterator; // provided to the client on requesting item attributes for Gfl and Gia - - RArray iNullArray; - TMediaAttributeIter iNullIterator; // Used for getting a folder item to perform a folder listing - - TBool iGetFolderListing; // used to check Gfl is in progress - RRemConGetFolderItemsResponse* iGflResponse; // used to build up Gfl response from client - TRemConFolderScope iScope; // stored for use in async callbacks to get folder items - - TBool iGetItemAttributes; // used to check Gia is in progress - TBool iSetAttributeValue; // used to check that client has set response if it returns KErrNone - RRemConGetItemAttributesResponse* iGiaResponse; // used to build up Gia response from client - - TBool iSearchSupported; - TBool iSearchInProgress; // used to check Search is in progress - RBuf8 iSearchString; // used to store search string until request is complete - - RRemConGetPathResponse* iGetPathResponse; // used to build up get path response - - TBool iMlscUpdatePending; - TUint16 iLastMlscUpdate; - }; - -#endif // REMCONMEDIABROWSETARGETBASE_H -