diff --git a/include/MainWindow.h b/include/MainWindow.h index 9d713431d..c621059ad 100644 --- a/include/MainWindow.h +++ b/include/MainWindow.h @@ -107,6 +107,8 @@ public slots: void togglePianoRollWin(); void toggleControllerRack(); + void updatePlayPauseIcons(); + void undo(); void redo(); diff --git a/include/engine.h b/include/engine.h index 8310c4d90..a4fc34c3e 100644 --- a/include/engine.h +++ b/include/engine.h @@ -147,8 +147,6 @@ public: return s_controllerRackView; } - static void updatePlayPauseIcons(); - static float framesPerTick() { return s_framesPerTick; diff --git a/include/song.h b/include/song.h index f0d93e186..0fb2a2047 100644 --- a/include/song.h +++ b/include/song.h @@ -360,6 +360,7 @@ private: signals: void projectLoaded(); + void playbackStateChanged(); void lengthChanged( int _tacts ); void tempoChanged( bpm_t _new_bpm ); void timeSignatureChanged( int _old_ticks_per_tact, diff --git a/src/core/engine.cpp b/src/core/engine.cpp index 983cd7160..58323681f 100644 --- a/src/core/engine.cpp +++ b/src/core/engine.cpp @@ -146,42 +146,6 @@ void engine::destroy() -void engine::updatePlayPauseIcons() -{ - s_songEditor->setPauseIcon( false ); - s_automationEditor->setPauseIcon( false ); - s_bbEditor->setPauseIcon( false ); - s_pianoRoll->setPauseIcon( false ); - - if( s_song->isPlaying() ) - { - switch( s_song->playMode() ) - { - case song::Mode_PlaySong: - s_songEditor->setPauseIcon( true ); - break; - - case song::Mode_PlayAutomationPattern: - s_automationEditor->setPauseIcon( true ); - break; - - case song::Mode_PlayBB: - s_bbEditor->setPauseIcon( true ); - break; - - case song::Mode_PlayPattern: - s_pianoRoll->setPauseIcon( true ); - break; - - default: - break; - } - } -} - - - - void engine::updateFramesPerTick() { s_framesPerTick = s_mixer->processingSampleRate() * 60.0f * 4 / diff --git a/src/core/song.cpp b/src/core/song.cpp index 04632bc94..5961a3ea3 100644 --- a/src/core/song.cpp +++ b/src/core/song.cpp @@ -404,10 +404,7 @@ void song::playSong() savePos(); - if( QApplication::type() != QApplication::Tty ) - { - engine::updatePlayPauseIcons(); - } + emit playbackStateChanged(); } @@ -447,7 +444,7 @@ void song::playTrack( track * _trackToPlay ) savePos(); - engine::updatePlayPauseIcons(); + emit playbackStateChanged(); } @@ -468,7 +465,7 @@ void song::playBB() savePos(); - engine::updatePlayPauseIcons(); + emit playbackStateChanged(); } @@ -493,7 +490,7 @@ void song::playPattern( pattern * _patternToPlay, bool _loop ) savePos(); - engine::updatePlayPauseIcons(); + emit playbackStateChanged(); } @@ -546,7 +543,7 @@ void song::togglePause() m_vstSyncController.setPlaybackState( m_playing ); - engine::updatePlayPauseIcons(); + emit playbackStateChanged(); } @@ -605,9 +602,7 @@ void song::stop() m_playMode = Mode_None; - if(QApplication::type() != QApplication::Tty) { - engine::updatePlayPauseIcons(); - } + emit playbackStateChanged(); } diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index a6e2451c4..eb6dcf188 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -190,6 +190,9 @@ MainWindow::MainWindow() : connect(&m_autoSaveTimer, SIGNAL(timeout()), this, SLOT(autoSave())); m_autoSaveTimer.start(1000 * 60); // 1 minute } + + connect( engine::getSong(), SIGNAL( playbackStateChanged() ), + this, SLOT( updatePlayPauseIcons() ) ); } @@ -926,6 +929,42 @@ void MainWindow::toggleControllerRack() +void MainWindow::updatePlayPauseIcons() +{ + engine::songEditor()->setPauseIcon( false ); + engine::automationEditor()->setPauseIcon( false ); + engine::getBBEditor()->setPauseIcon( false ); + engine::pianoRoll()->setPauseIcon( false ); + + if( engine::getSong()->isPlaying() ) + { + switch( engine::getSong()->playMode() ) + { + case song::Mode_PlaySong: + engine::songEditor()->setPauseIcon( true ); + break; + + case song::Mode_PlayAutomationPattern: + engine::automationEditor()->setPauseIcon( true ); + break; + + case song::Mode_PlayBB: + engine::getBBEditor()->setPauseIcon( true ); + break; + + case song::Mode_PlayPattern: + engine::pianoRoll()->setPauseIcon( true ); + break; + + default: + break; + } + } +} + + + + void MainWindow::undo() { engine::projectJournal()->undo();