22 #include "mpmpxharvesterframeworkwrapper.h" |
22 #include "mpmpxharvesterframeworkwrapper.h" |
23 #include "mpmpxcollectionframeworkwrapper.h" |
23 #include "mpmpxcollectionframeworkwrapper.h" |
24 #include "mpmpxplaybackframeworkwrapper.h" |
24 #include "mpmpxplaybackframeworkwrapper.h" |
25 #include "mpaudioeffectsframeworkwrapper.h" |
25 #include "mpaudioeffectsframeworkwrapper.h" |
26 #include "mpequalizerframeworkwrapper.h" |
26 #include "mpequalizerframeworkwrapper.h" |
27 #include "mpmediakeyhandler.h" |
|
28 #include "mptrace.h" |
27 #include "mptrace.h" |
29 #include "mpsettingsmanager.h" |
28 #include "mpsettingsmanager.h" |
30 #include "mpsongscanner.h" |
29 #include "mpsongscanner.h" |
31 #include "mpsongdata.h" |
30 #include "mpsongdata.h" |
32 |
31 |
175 container. |
174 container. |
176 |
175 |
177 */ |
176 */ |
178 |
177 |
179 /*! |
178 /*! |
|
179 ------------------------------------------------------------------------------- |
|
180 Playback related signals |
|
181 ------------------------------------------------------------------------------- |
|
182 */ |
|
183 |
|
184 /*! |
|
185 \fn void volumePropertyChanged( MpCommon::MpVolumeProperty, int value ); |
|
186 |
|
187 This signal is emitted when framework receives a volume related property notification, |
|
188 such as EPbPropertyVolume, EPbPropertyMaxVolume, EPbPropertyMute. |
|
189 */ |
|
190 |
|
191 |
|
192 /*! |
180 Constructs music player engine. |
193 Constructs music player engine. |
181 */ |
194 */ |
182 MpEngine::MpEngine() |
195 MpEngine::MpEngine() |
183 : mMpxHarvesterWrapper(0), |
196 : mMpxHarvesterWrapper(0), |
184 mSongScanner(0), |
197 mSongScanner(0), |
185 mMediaKeyHandler(0), |
|
186 mMpxCollectionWrapper(0), |
198 mMpxCollectionWrapper(0), |
187 mMpxPlaybackWrapper(0), |
199 mMpxPlaybackWrapper(0), |
188 mAudioEffectsWrapper(0), |
200 mAudioEffectsWrapper(0), |
189 mEqualizerWrapper(0), |
201 mEqualizerWrapper(0), |
190 mCurrentPresetIndex(KEqualizerPresetNone), |
202 mCurrentPresetIndex(KEqualizerPresetNone), |
191 mSongData(0), |
203 mSongData(0), |
192 mUsbBlockingState(USB_NotConnected), |
204 mUsbBlockingState(USB_NotConnected), |
193 mPreviousUsbState(USB_NotConnected) |
205 mPreviousUsbState(USB_NotConnected), |
|
206 mHandleMediaCommands(true) |
194 { |
207 { |
195 TX_LOG |
208 TX_LOG |
196 } |
209 } |
197 |
210 |
198 /*! |
211 /*! |
199 Destructs music player engine. |
212 Destructs music player engine. |
200 */ |
213 */ |
201 MpEngine::~MpEngine() |
214 MpEngine::~MpEngine() |
202 { |
215 { |
203 TX_ENTRY |
216 TX_ENTRY |
204 delete mMediaKeyHandler; |
|
205 delete mMpxPlaybackWrapper; |
217 delete mMpxPlaybackWrapper; |
206 delete mMpxHarvesterWrapper; |
218 delete mMpxHarvesterWrapper; |
207 delete mMpxCollectionWrapper; |
219 delete mMpxCollectionWrapper; |
208 delete mAudioEffectsWrapper; |
220 delete mAudioEffectsWrapper; |
209 delete mEqualizerWrapper; |
221 delete mEqualizerWrapper; |
217 */ |
229 */ |
218 void MpEngine::initialize( TUid hostUid, EngineMode mode ) |
230 void MpEngine::initialize( TUid hostUid, EngineMode mode ) |
219 { |
231 { |
220 TX_ENTRY_ARGS("hostUid=" << hostUid.iUid << ", mode=" << mode); |
232 TX_ENTRY_ARGS("hostUid=" << hostUid.iUid << ", mode=" << mode); |
221 mHostUid = hostUid; |
233 mHostUid = hostUid; |
222 mMediaKeyHandler = new MpMediaKeyHandler(); |
|
223 |
234 |
224 if ( StandAlone == mode ) { |
235 if ( StandAlone == mode ) { |
225 mSongData = new MpSongData(); |
236 mSongData = new MpSongData(); |
226 |
237 |
227 // Harvesting Wrapper |
238 // Harvesting Wrapper |
274 this, SLOT( handleEqualizerReady() ), |
285 this, SLOT( handleEqualizerReady() ), |
275 Qt::QueuedConnection ); |
286 Qt::QueuedConnection ); |
276 |
287 |
277 // Playback Wrapper |
288 // Playback Wrapper |
278 mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mHostUid, mSongData ); |
289 mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mHostUid, mSongData ); |
279 connect( this, SIGNAL( libraryAboutToUpdate() ), |
290 connect( this, SIGNAL( libraryUpdated() ), |
280 mMpxPlaybackWrapper, SLOT( closeCurrentPlayback() ) ); |
291 mMpxPlaybackWrapper, SLOT( closeCurrentPlayback() ) ); |
|
292 connect( mMpxPlaybackWrapper, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ), |
|
293 this, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ) ); |
281 |
294 |
282 // AudioEffects wrapper |
295 // AudioEffects wrapper |
283 mAudioEffectsWrapper = new MpAudioEffectsFrameworkWrapper(); |
296 mAudioEffectsWrapper = new MpAudioEffectsFrameworkWrapper(); |
284 } |
297 } |
285 else if ( Fetch == mode ) { |
298 else if ( Fetch == mode ) { |
309 mMpxCollectionWrapper->setRepeatFeatureEnabled( false ); |
322 mMpxCollectionWrapper->setRepeatFeatureEnabled( false ); |
310 mMpxCollectionWrapper->setShuffleFeatureEnabled( false ); |
323 mMpxCollectionWrapper->setShuffleFeatureEnabled( false ); |
311 |
324 |
312 // Playback Wrapper |
325 // Playback Wrapper |
313 mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mHostUid, 0 ); |
326 mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mHostUid, 0 ); |
314 connect( this, SIGNAL( libraryAboutToUpdate() ), |
327 connect( this, SIGNAL( libraryUpdated() ), |
315 mMpxPlaybackWrapper, SLOT( closeCurrentPlayback() ) ); |
328 mMpxPlaybackWrapper, SLOT( closeCurrentPlayback() ) ); |
|
329 connect( mMpxPlaybackWrapper, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ), |
|
330 this, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ) ); |
|
331 |
316 } |
332 } |
317 else if ( MediaBrowsing == mode ) { |
333 else if ( MediaBrowsing == mode ) { |
318 // Collection Wrapper |
334 // Collection Wrapper |
319 mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( mHostUid, 0 ); |
335 mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( mHostUid, 0 ); |
320 connect( mMpxCollectionWrapper, SIGNAL( collectionPlaylistOpened() ), |
336 connect( mMpxCollectionWrapper, SIGNAL( collectionPlaylistOpened() ), |
396 /*! |
415 /*! |
397 Slot to be called when song scanning starts. |
416 Slot to be called when song scanning starts. |
398 */ |
417 */ |
399 void MpEngine::handleScanStarted() { |
418 void MpEngine::handleScanStarted() { |
400 TX_ENTRY |
419 TX_ENTRY |
401 mMediaKeyHandler->setEnabled(false); |
420 mHandleMediaCommands = false; |
402 TX_EXIT |
421 TX_EXIT |
403 } |
422 } |
404 |
423 |
405 /*! |
424 /*! |
406 Slot to be called when song scanning ends. |
425 Slot to be called when song scanning ends. |
407 */ |
426 */ |
408 void MpEngine::handleScanEnded( int count, int error ) { |
427 void MpEngine::handleScanEnded( int count, int error ) { |
409 TX_ENTRY |
428 TX_ENTRY |
410 Q_UNUSED( count ); |
429 Q_UNUSED( count ); |
411 Q_UNUSED( error ); |
430 Q_UNUSED( error ); |
412 mMediaKeyHandler->setEnabled(true); |
431 mHandleMediaCommands = true; |
413 emit libraryUpdated(); |
432 emit libraryUpdated(); |
414 TX_EXIT |
433 TX_EXIT |
415 } |
434 } |
416 |
435 |
417 /*! |
436 /*! |
420 void MpEngine::handleDiskEvent( MpxDiskEvents event ) |
439 void MpEngine::handleDiskEvent( MpxDiskEvents event ) |
421 { |
440 { |
422 TX_ENTRY_ARGS("event=" << event); |
441 TX_ENTRY_ARGS("event=" << event); |
423 switch ( event ) { |
442 switch ( event ) { |
424 case DiskFormatStarted: |
443 case DiskFormatStarted: |
425 mMediaKeyHandler->setEnabled(false); |
444 mHandleMediaCommands = false; |
426 break; |
445 break; |
427 case DiskFormatEnded: |
446 case DiskFormatEnded: |
428 mMediaKeyHandler->setEnabled(true); |
447 mHandleMediaCommands = true; |
429 break; |
448 break; |
430 case DiskRemoved: |
449 case DiskRemoved: |
431 if ( mUsbBlockingState != USB_Synchronizing ) { |
450 if ( mUsbBlockingState != USB_Synchronizing ) { |
432 emit libraryUpdated(); |
451 emit libraryUpdated(); |
433 } |
452 } |
477 To be called when EMcMsgUSBMassStorageStart event is received. |
496 To be called when EMcMsgUSBMassStorageStart event is received. |
478 */ |
497 */ |
479 void MpEngine::handleUsbMassStorageStartEvent() |
498 void MpEngine::handleUsbMassStorageStartEvent() |
480 { |
499 { |
481 TX_ENTRY |
500 TX_ENTRY |
482 mMediaKeyHandler->setEnabled(false); |
501 mHandleMediaCommands = false; |
483 |
502 |
484 changeUsbBlockingState( USB_Synchronizing ); |
503 changeUsbBlockingState( USB_Synchronizing ); |
485 emit usbBlocked(true); |
504 emit usbBlocked(true); |
486 emit usbSynchronizationStarted(); |
505 emit usbSynchronizationStarted(); |
487 |
506 |
492 To be called when EMcMsgUSBMassStorageEnd event is received. |
511 To be called when EMcMsgUSBMassStorageEnd event is received. |
493 */ |
512 */ |
494 void MpEngine::handleUsbMassStorageEndEvent() |
513 void MpEngine::handleUsbMassStorageEndEvent() |
495 { |
514 { |
496 TX_ENTRY |
515 TX_ENTRY |
497 mMediaKeyHandler->setEnabled(true); |
516 mHandleMediaCommands = true; |
498 |
517 |
499 changeUsbBlockingState( USB_NotConnected ); |
518 changeUsbBlockingState( USB_NotConnected ); |
500 emit usbBlocked(false); |
519 emit usbBlocked(false); |
501 emit usbSynchronizationFinished(); |
520 emit usbSynchronizationFinished(); |
502 refreshLibrary(); |
521 refreshLibrary(); |
527 To be called when EMcMsgUSBMTPEnd event is received. |
546 To be called when EMcMsgUSBMTPEnd event is received. |
528 */ |
547 */ |
529 void MpEngine::handleUsbMtpEndEvent() |
548 void MpEngine::handleUsbMtpEndEvent() |
530 { |
549 { |
531 TX_ENTRY |
550 TX_ENTRY |
532 mMediaKeyHandler->setEnabled(true); |
551 mHandleMediaCommands = true; |
533 |
552 |
534 changeUsbBlockingState( USB_NotConnected ); |
553 changeUsbBlockingState( USB_NotConnected ); |
535 emit usbBlocked(false); |
554 emit usbBlocked(false); |
536 |
555 |
537 if ( mPreviousUsbState == USB_Synchronizing ) { |
556 if ( mPreviousUsbState == USB_Synchronizing ) { |
747 Slot to be called when song deleting starts. |
766 Slot to be called when song deleting starts. |
748 */ |
767 */ |
749 void MpEngine::handleDeleteStarted( TCollectionContext context, int count ) |
768 void MpEngine::handleDeleteStarted( TCollectionContext context, int count ) |
750 { |
769 { |
751 TX_ENTRY |
770 TX_ENTRY |
752 mMediaKeyHandler->setEnabled( false ); |
771 mHandleMediaCommands = false; |
753 emit deleteStarted( context, count ); |
772 emit deleteStarted( context, count ); |
754 TX_EXIT |
773 TX_EXIT |
755 } |
774 } |
756 |
775 |
757 /*! |
776 /*! |
758 Slot to be called when song deleting ends. |
777 Slot to be called when song deleting ends. |
759 */ |
778 */ |
760 void MpEngine::handleDeleteEnded( bool success ) |
779 void MpEngine::handleDeleteEnded( bool success ) |
761 { |
780 { |
762 TX_ENTRY |
781 TX_ENTRY |
763 mMediaKeyHandler->setEnabled(true); |
782 mHandleMediaCommands = true; |
764 emit songsDeleted( success ); |
783 emit songsDeleted( success ); |
765 TX_EXIT |
784 TX_EXIT |
766 } |
785 } |
767 |
786 |
768 /*! |
787 /*! |
806 |
825 |
807 void MpEngine::playEmbedded(const XQSharableFile& file ) |
826 void MpEngine::playEmbedded(const XQSharableFile& file ) |
808 { |
827 { |
809 mMpxPlaybackWrapper->play( file ); |
828 mMpxPlaybackWrapper->play( file ); |
810 } |
829 } |
|
830 |
|
831 /*! |
|
832 Slot to handle a play command |
|
833 */ |
|
834 |
|
835 void MpEngine::play() |
|
836 { |
|
837 if ( mHandleMediaCommands ) { |
|
838 mMpxPlaybackWrapper->play(); |
|
839 } |
|
840 } |
|
841 |
|
842 /*! |
|
843 Slot to handle a pause command. |
|
844 */ |
|
845 void MpEngine::pause() |
|
846 { |
|
847 if ( mHandleMediaCommands ) { |
|
848 mMpxPlaybackWrapper->pause(); |
|
849 } |
|
850 } |
|
851 |
811 /*! |
852 /*! |
812 Slot to handle a play pause. |
853 Slot to handle a play pause. |
813 */ |
854 */ |
814 void MpEngine::playPause() |
855 void MpEngine::playPause() |
815 { |
856 { |
816 mMpxPlaybackWrapper->playPause(); |
857 if ( mHandleMediaCommands ) { |
|
858 mMpxPlaybackWrapper->playPause(); |
|
859 } |
817 } |
860 } |
818 |
861 |
819 /*! |
862 /*! |
820 Slot to handle a stop. |
863 Slot to handle a stop. |
821 */ |
864 */ |
822 void MpEngine::stop() |
865 void MpEngine::stop() |
823 { |
866 { |
824 mMpxPlaybackWrapper->stop(); |
867 if ( mHandleMediaCommands ) { |
|
868 mMpxPlaybackWrapper->stop(); |
|
869 } |
825 } |
870 } |
826 |
871 |
827 /*! |
872 /*! |
828 Slot to handle a skip forward. |
873 Slot to handle a skip forward. |
829 */ |
874 */ |
830 void MpEngine::skipForward() |
875 void MpEngine::skipForward() |
831 { |
876 { |
832 mMpxPlaybackWrapper->skipForward(); |
877 if ( mHandleMediaCommands ) { |
|
878 mMpxPlaybackWrapper->skipForward(); |
|
879 } |
833 } |
880 } |
834 |
881 |
835 /*! |
882 /*! |
836 Slot to handle seek forward. |
883 Slot to handle seek forward. |
837 */ |
884 */ |
838 void MpEngine::startSeekForward() |
885 void MpEngine::startSeekForward() |
839 { |
886 { |
840 mMpxPlaybackWrapper->startSeekForward(); |
887 if ( mHandleMediaCommands ) { |
|
888 mMpxPlaybackWrapper->startSeekForward(); |
|
889 } |
841 } |
890 } |
842 |
891 |
843 /*! |
892 /*! |
844 Slot to handle stop seeking. |
893 Slot to handle stop seeking. |
845 */ |
894 */ |
846 void MpEngine::stopSeeking() |
895 void MpEngine::stopSeeking() |
847 { |
896 { |
848 mMpxPlaybackWrapper->stopSeeking(); |
897 if ( mHandleMediaCommands ) { |
|
898 mMpxPlaybackWrapper->stopSeeking(); |
|
899 } |
849 } |
900 } |
850 |
901 |
851 /*! |
902 /*! |
852 Slot to handle a skip backwards. |
903 Slot to handle a skip backwards. |
853 */ |
904 */ |
854 void MpEngine::skipBackward() |
905 void MpEngine::skipBackward() |
855 { |
906 { |
856 mMpxPlaybackWrapper->skipBackward(); |
907 if ( mHandleMediaCommands ) { |
|
908 mMpxPlaybackWrapper->skipBackward(); |
|
909 } |
857 } |
910 } |
858 |
911 |
859 /*! |
912 /*! |
860 Slot to handle seek backwards. |
913 Slot to handle seek backwards. |
861 */ |
914 */ |
862 void MpEngine::startSeekBackward() |
915 void MpEngine::startSeekBackward() |
863 { |
916 { |
864 mMpxPlaybackWrapper->startSeekBackward(); |
917 if ( mHandleMediaCommands ) { |
|
918 mMpxPlaybackWrapper->startSeekBackward(); |
|
919 } |
865 } |
920 } |
866 /*! |
921 /*! |
867 Slot to handle a request to change \a position. |
922 Slot to handle a request to change \a position. |
868 */ |
923 */ |
869 void MpEngine::setPosition( int position ) |
924 void MpEngine::setPosition( int position ) |
883 Slot to handle a request to change repeat \a mode. |
938 Slot to handle a request to change repeat \a mode. |
884 */ |
939 */ |
885 void MpEngine::setRepeat( bool mode ) |
940 void MpEngine::setRepeat( bool mode ) |
886 { |
941 { |
887 mMpxPlaybackWrapper->setRepeat( mode ); |
942 mMpxPlaybackWrapper->setRepeat( mode ); |
|
943 } |
|
944 |
|
945 /*! |
|
946 Slot to handle a request to get the volume level Max. |
|
947 Response will be asynchronously sent through volumePropertyChanged() signal. |
|
948 */ |
|
949 void MpEngine::getMaxVolume( ) |
|
950 { |
|
951 mMpxPlaybackWrapper->getMaxVolume(); |
|
952 } |
|
953 |
|
954 /*! |
|
955 Slot to handle a request to get the current volume level. |
|
956 Response will be asynchronously sent through volumePropertyChanged() signal. |
|
957 */ |
|
958 void MpEngine::getVolume( ) |
|
959 { |
|
960 mMpxPlaybackWrapper->getVolume(); |
|
961 } |
|
962 |
|
963 /*! |
|
964 Slot to handle a request to increase volume. |
|
965 */ |
|
966 void MpEngine::increaseVolume() |
|
967 { |
|
968 if ( mHandleMediaCommands ) { |
|
969 mMpxPlaybackWrapper->increaseVolume(); |
|
970 } |
|
971 } |
|
972 |
|
973 /*! |
|
974 Slot to handle a request to decrease volume. |
|
975 */ |
|
976 void MpEngine::decreaseVolume() |
|
977 { |
|
978 if ( mHandleMediaCommands ) { |
|
979 mMpxPlaybackWrapper->decreaseVolume(); |
|
980 } |
|
981 } |
|
982 |
|
983 /*! |
|
984 Slot to handle a request to set the volume level. |
|
985 */ |
|
986 void MpEngine::setVolume( int value ) |
|
987 { |
|
988 if ( mHandleMediaCommands ) { |
|
989 mMpxPlaybackWrapper->setVolume( value ); |
|
990 } |
|
991 } |
|
992 |
|
993 /*! |
|
994 Slot to handle a request to get the current mute state. |
|
995 Response will be asynchronously sent through volumePropertyChanged() signal. |
|
996 */ |
|
997 void MpEngine::getMuteState( ) |
|
998 { |
|
999 mMpxPlaybackWrapper->getMuteState(); |
|
1000 } |
|
1001 |
|
1002 /*! |
|
1003 Slot to handle a request to mute. |
|
1004 */ |
|
1005 void MpEngine::mute() |
|
1006 { |
|
1007 if ( mHandleMediaCommands ) { |
|
1008 mMpxPlaybackWrapper->mute(); |
|
1009 } |
|
1010 } |
|
1011 |
|
1012 /*! |
|
1013 Slot to handle a request to unmute. |
|
1014 */ |
|
1015 void MpEngine::unmute() |
|
1016 { |
|
1017 if ( mHandleMediaCommands ) { |
|
1018 mMpxPlaybackWrapper->unmute(); |
|
1019 } |
888 } |
1020 } |
889 |
1021 |
890 /*! |
1022 /*! |
891 Returns pointer to MpSongData, which is the song data for Details View. |
1023 Returns pointer to MpSongData, which is the song data for Details View. |
892 */ |
1024 */ |