diff -r 000000000000 -r 29b1cd4cb562 bluetooth/gavdp/test/tavsrcmtupdaterdatabaseaware.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/gavdp/test/tavsrcmtupdaterdatabaseaware.h Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,168 @@ +// Copyright (c) 2007-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: +// tavsrcmtupdater.h +// + +#ifndef TAVSRCMTUPDATER_H +#define TAVSRCMTUPDATER_H + +#include +#include +#include +#include +#include +#include +#include "mediainformation.h" + +_LIT(KAVRCPSettingsResourceFilename, "z:\\bluetooth\\avrcp\\avrcp-settings.rsc"); +const TInt KDefaultLength = 120000; +const TInt KPositionIncrement = 5000; + +class CStopBrowseWatcher + : public CActive + { +public: + static CStopBrowseWatcher* NewL(); + ~CStopBrowseWatcher(); + + void Start(); + void Complete(); + +private: + CStopBrowseWatcher(); + void ConstructL(); + +private: // from CActive + void RunL(); + void DoCancel(); + +private: + RThread iThread; + }; + +class CActiveCallBackConsole; +class CRemConDatabaseAwareNowPlayingTarget; +class CRemConDatabaseAwareMediaBrowseTarget; +class MRemConDatabaseAwareMediaLibraryBrowse; +class MRemConDatabaseAwareNowPlayingBrowse; +class CTavsrcMtUpdater : public CBase, public MActiveConsoleNotify, + public MPlayerApplicationSettingsNotify, + public MRemConDatabaseAwareMediaLibraryBrowseObserver, + public MRemConDatabaseAwareNowPlayingBrowseObserver, + public MRemConDatabaseAwareNowPlayingTargetObserver + { +public: + static CTavsrcMtUpdater* NewL(CRemConInterfaceSelector& aIfSel, TUint aRemConInterfaces); + ~CTavsrcMtUpdater(); + +private: + CTavsrcMtUpdater(); + void ConstructL(CRemConInterfaceSelector& aIfSel, TUint aRemConInterfaces); + + void KeyPressed(TChar aKey); + void MtMenu(); + + void ReadAVRCPSettingsFile(const TDesC& aResourceFileName); + + void AddEvent(TRegisterNotificationEvent aEvent); + void AddCompanyId(TInt aCompanyId); + void TrackReachedEnd(); + void TrackReachedStart(); + void PlackbackStatusChanged(MPlayerEventsObserver::TPlaybackStatus aPlaybackStatus); + void TrackChanged(TUint64 aIndex, TUint32 aLengthInMilliseconds); + void SetBatteryStatus(MPlayerEventsObserver::TTargetBatteryStatus aStatus); + void SetPlaybackPosition(TUint32 aPosition); + void SetAsActivePlayer(); + + MPlayerEventsObserver::TPlaybackStatus NextPlaybackStatus(); + MPlayerEventsObserver::TTargetBatteryStatus NextBatteryStatus(); + +private: + // from MPlayerApplicationSettingsNotify + void MpasnSetPlayerApplicationValueL(const RArray& aAttributeID, const RArray& aAttributeValue); + + // from MRemConDatabaseAwareNowPlayingTargetObserver + void MrcdanptoPlayItem(const TRemConItemUid& aItem, TRemConFolderScope aScope, TUint16 aUidCounter); + void MrcdanptoAddToNowPlaying(const TRemConItemUid& aItem, TRemConFolderScope aScope, TUint16 aUidCounter); + + // from MRemConDatabaseAwareMediaLibraryBrowseTargetObserver + void MrcdamlboGetFolderListing(TRemConFolderScope aScope, TUint aStartItem, TUint aEndItem); + void MrcdamlboFolderUp(TUint16 aMediaLibraryStateCookie); + void MrcdamlboFolderDown(const TRemConItemUid& aFolder, TUint16 aMediaLibraryStateCookie); + void MrcdamlboGetPath(RPointerArray& aPath); + void MrcdamlboSearch(const TDesC8& aSearch); + TInt MrcdamlboGetItem(TRemConFolderScope aScope, + const TRemConItemUid& aItemId, + TMediaAttributeIter& aIter, + TUint16 aMediaLibraryStateCookie); + + // from MRemConDatabaseAwareNowPlayingBrowseObserver + void MrcdanpboGetFolderListing(TUint aStartItem, TUint aEndItem); + TInt MrcdanpboGetItem(const TRemConItemUid& aItemId, + TMediaAttributeIter& aIter, + TUint16 aMediaLibraryStateCookie); + + void DisplayCurrentState(); + void SetAttributeL(REAResponse& aAttribute, TRemConItemUid& aUid); + +private: // Utility functions + TInt PrepareItemDataL(TMediaAttributeIter& aIter, + const TRemConItemUid& aItemId, + HBufC8* &aItemName, + RArray& aItemAttributes); + +private: // second thread functions + static TInt MediaBrowseThread(TAny* aPtr); + void BrowseSetupL(CRemConInterfaceSelector& aIfSel); + void BrowseCleanup(); + + static TInt BrowseKeyPressed(TAny* aPtr, TChar aKey); + void BrowseKeyPressedL(TChar aKey); + void BrowseMenu(); + +private: + CPlayerInfoTarget* iPlayerInformation; + MPlayerCapabilitiesObserver* iPlayerCapabilitiesObserver; + MPlayerApplicationSettingsObserver* iPlayerApplicationSettingsObserver; + MPlayerEventsObserver* iPlayerEventsObserver; + + CRemConDatabaseAwareMediaBrowseTarget* iMediaBrowse; + MRemConDatabaseAwareMediaLibraryBrowse* iMediaBrowseInterface; + MRemConDatabaseAwareNowPlayingBrowse* iNowPlayingBrowseInterface; + CRemConDatabaseAwareNowPlayingTarget* iNowPlaying; + + CActiveConsole* iMtUpdaterConsole; + + CActiveCallBackConsole* iMtBrowseConsole; + + TInt iIndex; + MPlayerEventsObserver::TPlaybackStatus iPlaybackStatus; + MPlayerEventsObserver::TTargetBatteryStatus iBatteryStatus; + TUint32 iPosition; + TUint32 iLength; + + + RArray iNotificationEvents; + RArray iCompanyIds; + + TInt iFolderDepth; + + TUint iUidCounter; + + TBool iMediaBrowseThreadOpen; + RThread iMediaBrowseThread; + CStopBrowseWatcher* iMtBrowseStopper; + }; + +#endif //TAVSRCMTUPDATER_H