From 349509d0b030d1590691ab72433a51e9e6319ae6 Mon Sep 17 00:00:00 2001 From: Patrick von Reth Date: Tue, 17 Jul 2012 18:36:08 +0200 Subject: [PATCH] fixed connect/disconnect logic --- src/TomahawkWindow.cpp | 19 ++++++++++++++----- src/TomahawkWindow.h | 1 + 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index e92735567..8ad2ee3a9 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -104,7 +104,7 @@ TomahawkWindow::TomahawkWindow( QWidget* parent ) connect( APP, SIGNAL( tomahawkLoaded() ), vm, SLOT( setTomahawkLoaded() ) ); // Pass loaded signal into libtomahawk so components in there can connect to ViewManager #ifdef Q_OS_WIN - connect(AudioEngine::instance(),SIGNAL(stateChanged(AudioState,AudioState)),this,SLOT(audioStateChanged(AudioState,AudioState))); + connect( AudioEngine::instance(), SIGNAL( stateChanged( AudioState, AudioState) ), SLOT( audioStateChanged( AudioState, AudioState) ) ); #endif ui->setupUi( this ); @@ -412,6 +412,7 @@ TomahawkWindow::setupSignals() connect( AudioEngine::instance(), SIGNAL( error( AudioEngine::AudioErrorCode ) ), SLOT( onAudioEngineError( AudioEngine::AudioErrorCode ) ) ); connect( AudioEngine::instance(), SIGNAL( loading( const Tomahawk::result_ptr& ) ), SLOT( onPlaybackLoading( const Tomahawk::result_ptr& ) ) ); connect( AudioEngine::instance(), SIGNAL( started( Tomahawk::result_ptr ) ), SLOT( audioStarted() ) ); + connect( AudioEngine::instance(), SIGNAL( finished(Tomahawk::result_ptr) ), SLOT( audioFinished() ) ); connect( AudioEngine::instance(), SIGNAL( resumed()), SLOT( audioStarted() ) ); connect( AudioEngine::instance(), SIGNAL( paused() ), SLOT( audioPaused() ) ); connect( AudioEngine::instance(), SIGNAL( stopped() ), SLOT( audioStopped() ) ); @@ -626,10 +627,6 @@ TomahawkWindow::audioStateChanged( AudioState newState, AudioState oldState ) { case AudioEngine::Playing: { - if ( !AudioEngine::instance()->currentTrack().isNull() ) - { - connect(AudioEngine::instance()->currentTrack()->toQuery().data(),SIGNAL(socialActionsLoaded()),this,SLOT(updateWindowsLoveButton())); - } QPixmap pause( RESPATH "images/pause-rest.png" ); m_thumbButtons[TP_PLAY_PAUSE].hIcon = pause.toWinHICON(); m_thumbButtons[TP_PLAY_PAUSE].szTip[ tr( "Pause" ).toWCharArray( m_thumbButtons[TP_PLAY_PAUSE].szTip ) ] = 0; @@ -1037,6 +1034,18 @@ TomahawkWindow::audioStarted() ui->actionPlay->setText( tr( "Pause" ) ); ActionCollection::instance()->getAction( "stop" )->setEnabled( true ); + +#ifdef Q_OS_WIN + connect( AudioEngine::instance()->currentTrack()->toQuery().data(), SIGNAL( socialActionsLoaded() ), SLOT( updateWindowsLoveButton() ) ); +#endif +} + +void +TomahawkWindow::audioFinished() +{ +#ifdef Q_OS_WIN + disconnect( AudioEngine::instance()->currentTrack()->toQuery().data(), SIGNAL( socialActionsLoaded() ), SLOT( updateWindowsLoveButton() ) ); +#endif } diff --git a/src/TomahawkWindow.h b/src/TomahawkWindow.h index 542722ebe..7ee64cc5d 100644 --- a/src/TomahawkWindow.h +++ b/src/TomahawkWindow.h @@ -121,6 +121,7 @@ private slots: void onPlaybackLoading( const Tomahawk::result_ptr& result ); void audioStarted(); + void audioFinished(); void audioPaused(); void audioStopped();