diff -r fdb31ab341af -r a0afa279b8fe utilities/mpnowplayingbanner/src/mpnowplayingwidget_p.cpp --- a/utilities/mpnowplayingbanner/src/mpnowplayingwidget_p.cpp Fri May 14 18:54:37 2010 -0500 +++ b/utilities/mpnowplayingbanner/src/mpnowplayingwidget_p.cpp Fri May 28 19:46:01 2010 -0500 @@ -23,12 +23,11 @@ #include #include #include -#include #include +#include "mpenginefactory.h" #include "mpnowplayingwidget_p.h" #include "mpnowplayingwidget.h" -#include "mpnowplayingbackend.h" #include "mptrace.h" const char *NOW_PLAYING_XML = ":/xml/nowplaying.docml"; @@ -48,16 +47,18 @@ \internal Constructs the now playing widget private. */ -MpNowPlayingWidgetPrivate::MpNowPlayingWidgetPrivate( long int playerId, MpNowPlayingWidget *qq ) +MpNowPlayingWidgetPrivate::MpNowPlayingWidgetPrivate( MpNowPlayingWidget *qq ) : q_ptr( qq ), mPrimaryText(0), mSecondaryText(0), - mState( NotPlaying ), + mState( MpPlaybackData::NotPlaying ), + mPlaybackData(0), + mMpEngine(0), mIcon(0), mDocumentLoader(0), mCurrentPressedState( BannerNone ) { - TX_ENTRY_ARGS( "Player ID =" << playerId << " Q pointer=" << ( void * )qq ) + TX_ENTRY_ARGS( " Q pointer=" << ( void * )qq ) QGraphicsWidget *widget; bool widgetsOk = false; @@ -106,7 +107,8 @@ Q_ASSERT_X(widgetsOk, "MpNowPlayingWidgetPrivate", "invalid xml file"); } - mBackEnd = new MpNowPlayingBackEnd( playerId ); + mMpEngine = MpEngineFactory::sharedEngine(); + mPlaybackData = mMpEngine->playbackData(); setEnabled(true); TX_EXIT } @@ -119,7 +121,6 @@ MpNowPlayingWidgetPrivate::~MpNowPlayingWidgetPrivate() { TX_ENTRY - delete mBackEnd; delete mPlayIcon; delete mPauseIcon; delete mDocumentLoader; @@ -133,26 +134,30 @@ void MpNowPlayingWidgetPrivate::setEnabled( bool enabled ) { if ( enabled ) { - connect( mBackEnd, SIGNAL(stateUpdate(SimplifiedPlayerState)), - this, SLOT(setState(SimplifiedPlayerState)) ); + connect( mPlaybackData, SIGNAL( playbackStateChanged() ), + this, SLOT( setState() ) ); - connect( mBackEnd, SIGNAL(titleChanged(QString)), - this, SLOT(setTitle(QString)) ); + connect( mPlaybackData, SIGNAL( playbackInfoChanged() ), + this, SLOT( updateBannerInfo() ) ); - connect( mBackEnd, SIGNAL(artistChanged(QString)), - this, SLOT(setArtist(QString)) ); - mBackEnd->update(); + setState(); + updateBannerInfo(); } else { - disconnect( mBackEnd, SIGNAL(stateUpdate(SimplifiedPlayerState)), - this, SLOT(setState(SimplifiedPlayerState)) ); + disconnect( mPlaybackData, SIGNAL( playbackStateChanged() ), + this, SLOT( setState() ) ); + + disconnect( mPlaybackData, SIGNAL( playbackInfoChanged() ), + this, SLOT( updateBannerInfo() ) ); + } +} - disconnect( mBackEnd, SIGNAL(titleChanged(QString)), - mPrimaryText, SLOT(setPlainText(QString)) ); - - disconnect( mBackEnd, SIGNAL(artistChanged(QString)), - mSecondaryText, SLOT(setPlainText(QString)) ); - } +/*! + Return if banner is attached based on current playback state + */ +bool MpNowPlayingWidgetPrivate::isBannerAttached() +{ + return mState == MpPlaybackData::NotPlaying ? false : true; } /*! @@ -172,7 +177,7 @@ if ( iconTouchRect.contains( event->pos() ) ) { if ( mCurrentPressedState == BannerIcon ) { // click on play/pause - mBackEnd->playPause(); + mMpEngine->playPause(); } } else if ( mCurrentPressedState == BannerLabels && geometry.contains( event->pos() )){ @@ -257,24 +262,27 @@ \internal Sets the simplified playback \a state. */ -void MpNowPlayingWidgetPrivate::setState( SimplifiedPlayerState state ) +void MpNowPlayingWidgetPrivate::setState( ) { + MpPlaybackData::SimplifiedState state = mPlaybackData->playbackState(); TX_ENTRY_ARGS( "State = " << state ) + switch ( state ) { - case NotPlaying: - if ( mState != NotPlaying ) + case MpPlaybackData::NotPlaying: + if ( mState != MpPlaybackData::NotPlaying ) emit q_ptr->playbackAttachmentChanged( false ); break; - case Playing: + case MpPlaybackData::Playing: mIcon->setIcon( *mPauseIcon ); mIcon->setProperty( "state", mIcon->property("state").toString() ); - if ( mState == NotPlaying ) + if ( mState == MpPlaybackData::NotPlaying ) emit q_ptr->playbackAttachmentChanged( true ); break; - case Paused: + case MpPlaybackData::Paused: + case MpPlaybackData::Stopped: mIcon->setIcon( *mPlayIcon ); mIcon->setProperty( "state", mIcon->property("state").toString() ); - if ( mState == NotPlaying ) + if ( mState == MpPlaybackData::NotPlaying ) emit q_ptr->playbackAttachmentChanged( true ); break; default: @@ -288,20 +296,12 @@ \internal Sets the \a title */ -void MpNowPlayingWidgetPrivate::setTitle( const QString &title ) +void MpNowPlayingWidgetPrivate::updateBannerInfo() { - mPrimaryText->setPlainText( title ); + mPrimaryText->setPlainText( mPlaybackData->title() ); mPrimaryText->setProperty( "state", mPrimaryText->property("state").toString() ); -} - -/*! - \internal - Sets the \a artist - */ -void MpNowPlayingWidgetPrivate::setArtist( const QString &artist ) -{ - mSecondaryText->setPlainText( artist ); + + mSecondaryText->setPlainText( mPlaybackData->artist() ); mSecondaryText->setProperty( "state", mSecondaryText->property("state").toString() ); } -