|
1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // tavsrcmtupdater.h |
|
15 // |
|
16 |
|
17 #ifndef TAVSRCMTUPDATER_H |
|
18 #define TAVSRCMTUPDATER_H |
|
19 |
|
20 #include <remconmediainformationtargetobserver.h> |
|
21 #include <playerinformationtargetobserver.h> |
|
22 #include <remcondatabaseawarenowplayingtargetobserver.h> |
|
23 #include <remcondatabaseawarenowplayingbrowseobserver.h> |
|
24 #include <remcondatabaseawaremedialibrarybrowseobserver.h> |
|
25 #include <remcon/avrcpspec.h> |
|
26 #include "mediainformation.h" |
|
27 |
|
28 _LIT(KAVRCPSettingsResourceFilename, "z:\\bluetooth\\avrcp\\avrcp-settings.rsc"); |
|
29 const TInt KDefaultLength = 120000; |
|
30 const TInt KPositionIncrement = 5000; |
|
31 |
|
32 class CStopBrowseWatcher |
|
33 : public CActive |
|
34 { |
|
35 public: |
|
36 static CStopBrowseWatcher* NewL(); |
|
37 ~CStopBrowseWatcher(); |
|
38 |
|
39 void Start(); |
|
40 void Complete(); |
|
41 |
|
42 private: |
|
43 CStopBrowseWatcher(); |
|
44 void ConstructL(); |
|
45 |
|
46 private: // from CActive |
|
47 void RunL(); |
|
48 void DoCancel(); |
|
49 |
|
50 private: |
|
51 RThread iThread; |
|
52 }; |
|
53 |
|
54 class CActiveCallBackConsole; |
|
55 class CRemConDatabaseAwareNowPlayingTarget; |
|
56 class CRemConDatabaseAwareMediaBrowseTarget; |
|
57 class MRemConDatabaseAwareMediaLibraryBrowse; |
|
58 class MRemConDatabaseAwareNowPlayingBrowse; |
|
59 class CTavsrcMtUpdater : public CBase, public MActiveConsoleNotify, |
|
60 public MPlayerApplicationSettingsNotify, |
|
61 public MRemConDatabaseAwareMediaLibraryBrowseObserver, |
|
62 public MRemConDatabaseAwareNowPlayingBrowseObserver, |
|
63 public MRemConDatabaseAwareNowPlayingTargetObserver |
|
64 { |
|
65 public: |
|
66 static CTavsrcMtUpdater* NewL(CRemConInterfaceSelector& aIfSel, TUint aRemConInterfaces); |
|
67 ~CTavsrcMtUpdater(); |
|
68 |
|
69 private: |
|
70 CTavsrcMtUpdater(); |
|
71 void ConstructL(CRemConInterfaceSelector& aIfSel, TUint aRemConInterfaces); |
|
72 |
|
73 void KeyPressed(TChar aKey); |
|
74 void MtMenu(); |
|
75 |
|
76 void ReadAVRCPSettingsFile(const TDesC& aResourceFileName); |
|
77 |
|
78 void AddEvent(TRegisterNotificationEvent aEvent); |
|
79 void AddCompanyId(TInt aCompanyId); |
|
80 void TrackReachedEnd(); |
|
81 void TrackReachedStart(); |
|
82 void PlackbackStatusChanged(MPlayerEventsObserver::TPlaybackStatus aPlaybackStatus); |
|
83 void TrackChanged(TUint64 aIndex, TUint32 aLengthInMilliseconds); |
|
84 void SetBatteryStatus(MPlayerEventsObserver::TTargetBatteryStatus aStatus); |
|
85 void SetPlaybackPosition(TUint32 aPosition); |
|
86 void SetAsActivePlayer(); |
|
87 |
|
88 MPlayerEventsObserver::TPlaybackStatus NextPlaybackStatus(); |
|
89 MPlayerEventsObserver::TTargetBatteryStatus NextBatteryStatus(); |
|
90 |
|
91 private: |
|
92 // from MPlayerApplicationSettingsNotify |
|
93 void MpasnSetPlayerApplicationValueL(const RArray<TInt>& aAttributeID, const RArray<TInt>& aAttributeValue); |
|
94 |
|
95 // from MRemConDatabaseAwareNowPlayingTargetObserver |
|
96 void MrcdanptoPlayItem(const TRemConItemUid& aItem, TRemConFolderScope aScope, TUint16 aUidCounter); |
|
97 void MrcdanptoAddToNowPlaying(const TRemConItemUid& aItem, TRemConFolderScope aScope, TUint16 aUidCounter); |
|
98 |
|
99 // from MRemConDatabaseAwareMediaLibraryBrowseTargetObserver |
|
100 void MrcdamlboGetFolderListing(TRemConFolderScope aScope, TUint aStartItem, TUint aEndItem); |
|
101 void MrcdamlboFolderUp(TUint16 aMediaLibraryStateCookie); |
|
102 void MrcdamlboFolderDown(const TRemConItemUid& aFolder, TUint16 aMediaLibraryStateCookie); |
|
103 void MrcdamlboGetPath(RPointerArray<HBufC8>& aPath); |
|
104 void MrcdamlboSearch(const TDesC8& aSearch); |
|
105 TInt MrcdamlboGetItem(TRemConFolderScope aScope, |
|
106 const TRemConItemUid& aItemId, |
|
107 TMediaAttributeIter& aIter, |
|
108 TUint16 aMediaLibraryStateCookie); |
|
109 |
|
110 // from MRemConDatabaseAwareNowPlayingBrowseObserver |
|
111 void MrcdanpboGetFolderListing(TUint aStartItem, TUint aEndItem); |
|
112 TInt MrcdanpboGetItem(const TRemConItemUid& aItemId, |
|
113 TMediaAttributeIter& aIter, |
|
114 TUint16 aMediaLibraryStateCookie); |
|
115 |
|
116 void DisplayCurrentState(); |
|
117 void SetAttributeL(REAResponse& aAttribute, TRemConItemUid& aUid); |
|
118 |
|
119 private: // Utility functions |
|
120 TInt PrepareItemDataL(TMediaAttributeIter& aIter, |
|
121 const TRemConItemUid& aItemId, |
|
122 HBufC8* &aItemName, |
|
123 RArray<TMediaElementAttribute>& aItemAttributes); |
|
124 |
|
125 private: // second thread functions |
|
126 static TInt MediaBrowseThread(TAny* aPtr); |
|
127 void BrowseSetupL(CRemConInterfaceSelector& aIfSel); |
|
128 void BrowseCleanup(); |
|
129 |
|
130 static TInt BrowseKeyPressed(TAny* aPtr, TChar aKey); |
|
131 void BrowseKeyPressedL(TChar aKey); |
|
132 void BrowseMenu(); |
|
133 |
|
134 private: |
|
135 CPlayerInfoTarget* iPlayerInformation; |
|
136 MPlayerCapabilitiesObserver* iPlayerCapabilitiesObserver; |
|
137 MPlayerApplicationSettingsObserver* iPlayerApplicationSettingsObserver; |
|
138 MPlayerEventsObserver* iPlayerEventsObserver; |
|
139 |
|
140 CRemConDatabaseAwareMediaBrowseTarget* iMediaBrowse; |
|
141 MRemConDatabaseAwareMediaLibraryBrowse* iMediaBrowseInterface; |
|
142 MRemConDatabaseAwareNowPlayingBrowse* iNowPlayingBrowseInterface; |
|
143 CRemConDatabaseAwareNowPlayingTarget* iNowPlaying; |
|
144 |
|
145 CActiveConsole* iMtUpdaterConsole; |
|
146 |
|
147 CActiveCallBackConsole* iMtBrowseConsole; |
|
148 |
|
149 TInt iIndex; |
|
150 MPlayerEventsObserver::TPlaybackStatus iPlaybackStatus; |
|
151 MPlayerEventsObserver::TTargetBatteryStatus iBatteryStatus; |
|
152 TUint32 iPosition; |
|
153 TUint32 iLength; |
|
154 |
|
155 |
|
156 RArray<TInt> iNotificationEvents; |
|
157 RArray<TInt> iCompanyIds; |
|
158 |
|
159 TInt iFolderDepth; |
|
160 |
|
161 TUint iUidCounter; |
|
162 |
|
163 TBool iMediaBrowseThreadOpen; |
|
164 RThread iMediaBrowseThread; |
|
165 CStopBrowseWatcher* iMtBrowseStopper; |
|
166 }; |
|
167 |
|
168 #endif //TAVSRCMTUPDATER_H |