30 #include "mpmpxplaybackframeworkwrapper_p.h" |
30 #include "mpmpxplaybackframeworkwrapper_p.h" |
31 #include "mpmpxplaybackframeworkwrapper.h" |
31 #include "mpmpxplaybackframeworkwrapper.h" |
32 #include "mpplaybackdata.h" |
32 #include "mpplaybackdata.h" |
33 #include "mpcommondefs.h" |
33 #include "mpcommondefs.h" |
34 #include "mptrace.h" |
34 #include "mptrace.h" |
|
35 #include "mpxaudioeffectengine.h" |
|
36 |
|
37 _LIT(KMPXPnRealAudioMimeType, "audio/x-pn-realaudio"); |
|
38 _LIT(KMPXRealAudioMimeType, "audio/x-realaudio"); |
|
39 _LIT(KMPXRnRealAudioMimeType, "audio/vnd.rn-realaudio"); |
35 /*! |
40 /*! |
36 \class MpMpxPlaybackFrameworkWrapperPrivate |
41 \class MpMpxPlaybackFrameworkWrapperPrivate |
37 \brief Wrapper for mpx framework utilities - private implementation. |
42 \brief Wrapper for mpx framework utilities - private implementation. |
38 |
43 |
39 This is a private implementation of the mpx framework wrapper utilties interface. |
44 This is a private implementation of the mpx framework wrapper utilties interface. |
71 } |
76 } |
72 |
77 |
73 /*! |
78 /*! |
74 \internal |
79 \internal |
75 */ |
80 */ |
76 void MpMpxPlaybackFrameworkWrapperPrivate::init( MpCommon::MpViewMode viewMode, TUid hostUid ) |
81 void MpMpxPlaybackFrameworkWrapperPrivate::init( TUid hostUid ) |
77 { |
82 { |
78 iViewMode = viewMode; |
|
79 mHostUid = hostUid; |
83 mHostUid = hostUid; |
80 TRAPD(err, DoInitL()); |
84 TRAPD(err, DoInitL()); |
81 if ( err != KErrNone ) { |
85 if ( err != KErrNone ) { |
82 TX_LOG_ARGS("Error: " << err << "; should never get here."); |
86 TX_LOG_ARGS("Error: " << err << "; should never get here."); |
83 } |
87 } |
144 } |
148 } |
145 |
149 |
146 /*! |
150 /*! |
147 \internal |
151 \internal |
148 */ |
152 */ |
|
153 void MpMpxPlaybackFrameworkWrapperPrivate::startSeekForward() |
|
154 { |
|
155 TX_ENTRY |
|
156 TRAPD(err, iPlaybackUtility->CommandL(EPbCmdStartSeekForward)); |
|
157 if ( err != KErrNone ) { |
|
158 TX_LOG_ARGS("Error: " << err << "; should never get here."); |
|
159 } |
|
160 TX_EXIT |
|
161 } |
|
162 |
|
163 /*! |
|
164 \internal |
|
165 */ |
|
166 void MpMpxPlaybackFrameworkWrapperPrivate::stopSeeking() |
|
167 { |
|
168 TX_ENTRY |
|
169 TRAPD(err, iPlaybackUtility->CommandL(EPbCmdStopSeeking)); |
|
170 if ( err != KErrNone ) { |
|
171 TX_LOG_ARGS("Error: " << err << "; should never get here."); |
|
172 } |
|
173 TX_EXIT |
|
174 } |
|
175 |
|
176 /*! |
|
177 \internal |
|
178 */ |
149 void MpMpxPlaybackFrameworkWrapperPrivate::skipBackward() |
179 void MpMpxPlaybackFrameworkWrapperPrivate::skipBackward() |
150 { |
180 { |
151 TX_ENTRY |
181 TX_ENTRY |
152 TRAPD(err, iPlaybackUtility->CommandL(EPbCmdPrevious)); |
182 TRAPD(err, iPlaybackUtility->CommandL(EPbCmdPrevious)); |
|
183 if ( err != KErrNone ) { |
|
184 TX_LOG_ARGS("Error: " << err << "; should never get here."); |
|
185 } |
|
186 TX_EXIT |
|
187 } |
|
188 |
|
189 /*! |
|
190 \internal |
|
191 */ |
|
192 void MpMpxPlaybackFrameworkWrapperPrivate::startSeekBackward() |
|
193 { |
|
194 TX_ENTRY |
|
195 TRAPD(err, iPlaybackUtility->CommandL(EPbCmdStartSeekBackward)); |
153 if ( err != KErrNone ) { |
196 if ( err != KErrNone ) { |
154 TX_LOG_ARGS("Error: " << err << "; should never get here."); |
197 TX_LOG_ARGS("Error: " << err << "; should never get here."); |
155 } |
198 } |
156 TX_EXIT |
199 TX_EXIT |
157 } |
200 } |
187 */ |
230 */ |
188 void MpMpxPlaybackFrameworkWrapperPrivate::setRepeat( bool mode ) |
231 void MpMpxPlaybackFrameworkWrapperPrivate::setRepeat( bool mode ) |
189 { |
232 { |
190 TX_ENTRY_ARGS("mode =" << mode); |
233 TX_ENTRY_ARGS("mode =" << mode); |
191 TRAPD(err, iPlaybackUtility->SetL(EPbPropertyRepeatMode, mode ? EPbRepeatAll : EPbRepeatOff)); |
234 TRAPD(err, iPlaybackUtility->SetL(EPbPropertyRepeatMode, mode ? EPbRepeatAll : EPbRepeatOff)); |
|
235 if ( err != KErrNone ) { |
|
236 TX_LOG_ARGS("Error: " << err << "; should never get here."); |
|
237 } |
|
238 TX_EXIT |
|
239 } |
|
240 |
|
241 /*! |
|
242 \internal |
|
243 */ |
|
244 void MpMpxPlaybackFrameworkWrapperPrivate::setBalance( int value ) |
|
245 { |
|
246 TX_ENTRY_ARGS("value =" << value); |
|
247 TRAPD( err, iPlaybackUtility->SetL( EPbPropertyBalance, value ) ); |
|
248 if ( err != KErrNone ) { |
|
249 TX_LOG_ARGS("Error: " << err << "; should never get here."); |
|
250 } |
|
251 TX_EXIT |
|
252 } |
|
253 |
|
254 /*! |
|
255 \internal |
|
256 */ |
|
257 void MpMpxPlaybackFrameworkWrapperPrivate::applyAudioEffects() |
|
258 { |
|
259 TX_ENTRY |
|
260 TRAPD( err, iPlaybackUtility->CommandL( EPbApplyEffect, KAudioEffectsID ) ); |
|
261 if ( err != KErrNone ) { |
|
262 TX_LOG_ARGS("Error: " << err << "; should never get here."); |
|
263 } |
|
264 TX_EXIT |
|
265 } |
|
266 |
|
267 /*! |
|
268 \internal |
|
269 */ |
|
270 void MpMpxPlaybackFrameworkWrapperPrivate::applyEqualizer() |
|
271 { |
|
272 TX_ENTRY |
|
273 TRAPD( err, iPlaybackUtility->CommandL( EPbApplyEffect, KEqualizerID ) ); |
192 if ( err != KErrNone ) { |
274 if ( err != KErrNone ) { |
193 TX_LOG_ARGS("Error: " << err << "; should never get here."); |
275 TX_LOG_ARGS("Error: " << err << "; should never get here."); |
194 } |
276 } |
195 TX_EXIT |
277 TX_EXIT |
196 } |
278 } |
306 aProperties.ValueText( KMPXMediaMusicAlbum ).Length() ) ); |
388 aProperties.ValueText( KMPXMediaMusicAlbum ).Length() ) ); |
307 } |
389 } |
308 else { |
390 else { |
309 changed |= iPlaybackData->setAlbum(hbTrId("txt_mus_other_unknown4")); |
391 changed |= iPlaybackData->setAlbum(hbTrId("txt_mus_other_unknown4")); |
310 } |
392 } |
311 if ( changed ) { |
393 if (aProperties.IsSupported(TMPXAttribute(KMPXMediaGeneralMimeType))) { |
312 // This is required to propagate the playback info to UI at once. |
394 |
313 iPlaybackData->commitPlaybackInfo(); |
395 const TDesC& mimeType = aProperties.ValueText ( KMPXMediaGeneralMimeType ); |
314 } |
396 |
|
397 bool realAudioMode = |
|
398 ( mimeType.Compare( KMPXPnRealAudioMimeType ) == 0 ) || |
|
399 ( mimeType.Compare( KMPXRealAudioMimeType ) == 0) || |
|
400 ( mimeType.Compare( KMPXRnRealAudioMimeType ) == 0 ); |
|
401 |
|
402 changed |= iPlaybackData->setRealAudio( realAudioMode ); |
|
403 } |
|
404 |
315 |
405 |
316 if ( aProperties.IsSupported( KMPXMediaGeneralUri) ) { |
406 if ( aProperties.IsSupported( KMPXMediaGeneralUri) ) { |
317 iPlaybackData->setUri( |
407 iPlaybackData->setUri( |
318 QString::fromUtf16( |
408 QString::fromUtf16( |
319 aProperties.ValueText( KMPXMediaGeneralUri ).Ptr(), |
409 aProperties.ValueText( KMPXMediaGeneralUri ).Ptr(), |
329 iPlaybackData->setAlbumArtUri( |
419 iPlaybackData->setAlbumArtUri( |
330 QString::fromUtf16( |
420 QString::fromUtf16( |
331 aProperties.ValueText( KMPXMediaGeneralUri ).Ptr(), |
421 aProperties.ValueText( KMPXMediaGeneralUri ).Ptr(), |
332 aProperties.ValueText( KMPXMediaGeneralUri ).Length() ) ); |
422 aProperties.ValueText( KMPXMediaGeneralUri ).Length() ) ); |
333 } |
423 } |
|
424 if ( aProperties.IsSupported( KMPXMediaMusicAlbumId) ) { |
|
425 changed |= iPlaybackData->setAlbumId( |
|
426 aProperties.ValueTObjectL<TInt>( KMPXMediaMusicAlbumId ) ); |
|
427 } |
334 |
428 |
335 |
429 if ( aProperties.IsSupported( KMPXMediaGeneralId) ) { |
|
430 changed |= iPlaybackData->setId( |
|
431 aProperties.ValueTObjectL<TInt>( KMPXMediaGeneralId ) ); |
|
432 } |
|
433 |
|
434 if ( changed ) { |
|
435 // This is required to propagate the playback info to UI at once. |
|
436 iPlaybackData->commitPlaybackInfo(); |
|
437 } |
336 TX_EXIT |
438 TX_EXIT |
337 } |
439 } |
338 |
440 |
339 /*! |
441 /*! |
340 \internal |
442 \internal |
341 */ |
443 */ |
342 void MpMpxPlaybackFrameworkWrapperPrivate::DoInitL() |
444 void MpMpxPlaybackFrameworkWrapperPrivate::DoInitL() |
343 { |
445 { |
344 TX_ENTRY |
446 TX_ENTRY |
345 |
447 iPlaybackUtility = MMPXPlaybackUtility::UtilityL( mHostUid ); |
346 iPlaybackUtility = MMPXPlaybackUtility::UtilityL( mHostUid ); |
448 iPlaybackUtility->AddObserverL( *this ); |
347 iPlaybackUtility->AddObserverL( *this ); |
449 iPlaybackData = new MpPlaybackData(); |
348 iPlaybackData = new MpPlaybackData(); |
450 |
|
451 UpdateStateL(); |
|
452 if ( iPlaybackUtility->Source() ) { |
|
453 RetrieveSongDetailsL(); |
|
454 } |
349 TX_EXIT |
455 TX_EXIT |
350 } |
456 } |
351 |
457 |
352 /*! |
458 /*! |
353 \internal |
459 \internal |
427 break; |
533 break; |
428 case TMPXPlaybackMessage::EMediaChanged: |
534 case TMPXPlaybackMessage::EMediaChanged: |
429 TX_LOG_ARGS("TMPXPlaybackMessage::EMediaChanged") |
535 TX_LOG_ARGS("TMPXPlaybackMessage::EMediaChanged") |
430 RetrieveSongDetailsL(); |
536 RetrieveSongDetailsL(); |
431 break; |
537 break; |
|
538 case TMPXPlaybackMessage::EPlaylistUpdated: |
|
539 TX_LOG_ARGS( "EPlaylistUpdated" ) |
|
540 case TMPXPlaybackMessage::EActivePlayerChanged: |
|
541 TX_LOG_ARGS( "EActivePlayerChanged or fall through from EPlaylistUpdated" ) |
|
542 UpdateStateL(); |
|
543 RetrieveSongDetailsL(); |
|
544 break; |
432 default: |
545 default: |
433 break; |
546 break; |
434 } |
547 } |
435 } |
548 } |
436 TX_EXIT |
549 TX_EXIT |
464 void MpMpxPlaybackFrameworkWrapperPrivate::UpdateStateL() |
577 void MpMpxPlaybackFrameworkWrapperPrivate::UpdateStateL() |
465 { |
578 { |
466 TX_ENTRY |
579 TX_ENTRY |
467 if ( !iPlaybackUtility->Source() ) { |
580 if ( !iPlaybackUtility->Source() ) { |
468 TX_LOG_ARGS("There is no source") |
581 TX_LOG_ARGS("There is no source") |
469 iPlaybackData->setPlaybackState( MpPlaybackData::Stopped ); |
582 iPlaybackData->setPlaybackState( MpPlaybackData::NotPlaying ); |
470 } |
583 } |
471 else { |
584 else { |
472 switch ( iPlaybackUtility->StateL() ) { |
585 switch ( iPlaybackUtility->StateL() ) { |
473 case EPbStatePlaying: |
586 case EPbStatePlaying: |
474 TX_LOG_ARGS("EPbStatePlaying") |
587 TX_LOG_ARGS("EPbStatePlaying") |
502 requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralTitle ) ); |
615 requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralTitle ) ); |
503 requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicArtist ) ); |
616 requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicArtist ) ); |
504 requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbum ) ); |
617 requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbum ) ); |
505 requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralUri ) ); |
618 requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralUri ) ); |
506 requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumArtFileName ) ); |
619 requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumArtFileName ) ); |
|
620 requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumId ) ); |
|
621 requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralMimeType ) ); |
|
622 requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralId ) ); |
|
623 |
507 |
624 |
508 mediaSrc->MediaL( requestedAttr.Array(), *this ); |
625 mediaSrc->MediaL( requestedAttr.Array(), *this ); |
509 CleanupStack::PopAndDestroy( &requestedAttr ); |
626 CleanupStack::PopAndDestroy( &requestedAttr ); |
510 TX_EXIT |
627 TX_EXIT |
511 } |
628 } |