From 4d9e5e36a6bcb75937b95210c4193ddd10192131 Mon Sep 17 00:00:00 2001 From: Andres Date: Tue, 5 Nov 2019 08:17:25 -0300 Subject: [PATCH 01/11] Sampletrack activity indicator --- include/FadeButton.h | 1 + include/SampleTrack.h | 7 ++++++ src/gui/widgets/FadeButton.cpp | 10 ++++++++ src/tracks/SampleTrack.cpp | 44 +++++++++++++++++++++++++++++++++- 4 files changed, 61 insertions(+), 1 deletion(-) diff --git a/include/FadeButton.h b/include/FadeButton.h index 09a4c6457..d63b68cff 100644 --- a/include/FadeButton.h +++ b/include/FadeButton.h @@ -47,6 +47,7 @@ public: public slots: void activate(); void noteEnd(); + void notPlaying(); protected: diff --git a/include/SampleTrack.h b/include/SampleTrack.h index 2bad4d910..c8f94bcd9 100644 --- a/include/SampleTrack.h +++ b/include/SampleTrack.h @@ -29,6 +29,7 @@ #include #include "AudioPort.h" +#include "FadeButton.h" #include "FxMixer.h" #include "FxLineLcdSpinBox.h" #include "Track.h" @@ -161,6 +162,10 @@ public: return "sampletrack"; } +signals: + void playing(); + void notPlaying(); + public slots: void updateTcos(); void setPlayingTcos( bool isPlaying ); @@ -171,6 +176,7 @@ private: FloatModel m_panningModel; IntModel m_effectChannelModel; AudioPort m_audioPort; + bool m_wasPlaying; @@ -230,6 +236,7 @@ private: SampleTrackWindow * m_window; Knob * m_volumeKnob; Knob * m_panningKnob; + FadeButton * m_activityIndicator; TrackLabelButton * m_tlb; diff --git a/src/gui/widgets/FadeButton.cpp b/src/gui/widgets/FadeButton.cpp index b633286b1..b1514aacb 100644 --- a/src/gui/widgets/FadeButton.cpp +++ b/src/gui/widgets/FadeButton.cpp @@ -100,6 +100,16 @@ void FadeButton::noteEnd() +void FadeButton::notPlaying() +{ + activeNotes = 0; + m_releaseTimer.restart(); + signalUpdate(); +} + + + + void FadeButton::customEvent(QEvent *) { update(); diff --git a/src/tracks/SampleTrack.cpp b/src/tracks/SampleTrack.cpp index 72f63bb05..afc6b89e7 100644 --- a/src/tracks/SampleTrack.cpp +++ b/src/tracks/SampleTrack.cpp @@ -592,7 +592,8 @@ SampleTrack::SampleTrack( TrackContainer* tc ) : m_panningModel( DefaultPanning, PanningLeft, PanningRight, 0.1f, this, tr( "Panning" ) ), m_effectChannelModel( 0, 0, 0, this, tr( "FX channel" ) ), - m_audioPort( tr( "Sample track" ), true, &m_volumeModel, &m_panningModel, &m_mutedModel ) + m_audioPort( tr( "Sample track" ), true, &m_volumeModel, &m_panningModel, &m_mutedModel ), + m_wasPlaying(false) { setName( tr( "Sample track" ) ); m_panningModel.setCenterValue( DefaultPanning ); @@ -617,11 +618,17 @@ bool SampleTrack::play( const MidiTime & _start, const fpp_t _frames, { m_audioPort.effects()->startRunning(); bool played_a_note = false; // will be return variable + bool is_playing = false; tcoVector tcos; ::BBTrack * bb_track = NULL; if( _tco_num >= 0 ) { + if (m_wasPlaying && _start > getTCO(_tco_num)->length()) + { + m_wasPlaying = false; + emit notPlaying(); + } if( _start != 0 ) { return false; @@ -630,6 +637,8 @@ bool SampleTrack::play( const MidiTime & _start, const fpp_t _frames, if (trackContainer() == (TrackContainer*)Engine::getBBTrackContainer()) { bb_track = BBTrack::findBBTrack( _tco_num ); + m_wasPlaying = true; + emit playing(); } } else @@ -641,6 +650,10 @@ bool SampleTrack::play( const MidiTime & _start, const fpp_t _frames, if( _start >= sTco->startPosition() && _start < sTco->endPosition() ) { + if (sTco->isPlaying()) + { + is_playing = true; + } if( sTco->isPlaying() == false && _start > sTco->startPosition() + sTco->startTimeOffset() ) { auto bufferFramesPerTick = Engine::framesPerTick (sTco->sampleBuffer ()->sampleRate ()); @@ -657,6 +670,7 @@ bool SampleTrack::play( const MidiTime & _start, const fpp_t _frames, sTco->setSamplePlayLength( samplePlayLength ); tcos.push_back( sTco ); sTco->setIsPlaying( true ); + is_playing = true; } } } @@ -665,6 +679,18 @@ bool SampleTrack::play( const MidiTime & _start, const fpp_t _frames, sTco->setIsPlaying( false ); } } + + if (is_playing && !m_wasPlaying) + { + m_wasPlaying = true; + emit playing(); + } + else if (!is_playing && m_wasPlaying) + { + m_wasPlaying = false; + emit notPlaying(); + } + } for( tcoVector::Iterator it = tcos.begin(); it != tcos.end(); ++it ) @@ -826,6 +852,22 @@ SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) : m_panningKnob->setLabel( tr( "PAN" ) ); m_panningKnob->show(); + m_activityIndicator = new FadeButton(QApplication::palette().color(QPalette::Active, + QPalette::Background), + QApplication::palette().color(QPalette::Active, + QPalette::BrightText), + QApplication::palette().color(QPalette::Active, + QPalette::BrightText).darker(), + getTrackSettingsWidget()); + m_activityIndicator->setGeometry(settingsWidgetWidth-2*24-11, 2, 8, 28); + m_activityIndicator->show(); + connect(_t, SIGNAL(playing()), + m_activityIndicator, SLOT(activate())); + connect(_t, SIGNAL(notPlaying()), + m_activityIndicator, SLOT(notPlaying())); + connect(Engine::getSong(), SIGNAL(stopped()), + m_activityIndicator, SLOT(notPlaying())); + setModel( _t ); m_window = new SampleTrackWindow(this); From caaeb62a95a37249525de888a94613dfeb4df545 Mon Sep 17 00:00:00 2001 From: Andres Date: Thu, 7 Nov 2019 20:53:05 -0300 Subject: [PATCH 02/11] Moved the activity indicator mute code to parent class --- include/InstrumentTrack.h | 5 ++++- include/Track.h | 6 ++++++ src/core/Track.cpp | 25 +++++++++++++++++++++++++ src/tracks/InstrumentTrack.cpp | 17 ----------------- 4 files changed, 35 insertions(+), 18 deletions(-) diff --git a/include/InstrumentTrack.h b/include/InstrumentTrack.h index d72331e52..f2602686b 100644 --- a/include/InstrumentTrack.h +++ b/include/InstrumentTrack.h @@ -333,7 +333,6 @@ private slots: void midiInSelected(); void midiOutSelected(); void midiConfigChanged(); - void muteChanged(); void assignFxLine( int channelIndex ); void createFxLine(); @@ -357,6 +356,10 @@ private: QPoint m_lastPos; + FadeButton * getActivityIndicator() + { + return m_activityIndicator; + } friend class InstrumentTrackWindow; diff --git a/include/Track.h b/include/Track.h index 70e49a1c6..51705e942 100644 --- a/include/Track.h +++ b/include/Track.h @@ -39,6 +39,7 @@ #include "AutomatableModel.h" #include "ModelView.h" #include "DataFile.h" +#include "FadeButton.h" class QMenu; @@ -737,12 +738,17 @@ private: Actions m_action; + virtual FadeButton * getActivityIndicator() + { + return NULL; + } friend class TrackLabelButton; private slots: void createTCOView( TrackContentObject * tco ); + void muteChanged (); } ; diff --git a/src/core/Track.cpp b/src/core/Track.cpp index 5c61dc5ab..7571a615a 100644 --- a/src/core/Track.cpp +++ b/src/core/Track.cpp @@ -2715,6 +2715,9 @@ TrackView::TrackView( Track * track, TrackContainerView * tcv ) : connect( &m_track->m_mutedModel, SIGNAL( dataChanged() ), &m_trackContentWidget, SLOT( update() ) ); + connect(&m_track->m_mutedModel, SIGNAL(dataChanged()), + this, SLOT(muteChanged())); + connect( &m_track->m_soloModel, SIGNAL( dataChanged() ), m_track, SLOT( toggleSolo() ), Qt::DirectConnection ); // create views for already existing TCOs @@ -3047,3 +3050,25 @@ void TrackView::createTCOView( TrackContentObject * tco ) } tco->selectViewOnCreate( false ); } + + + + +void TrackView::muteChanged() +{ + FadeButton * actind = getActivityIndicator(); + if (actind) + { + if (m_track->m_mutedModel.value()) + { + actind->setActiveColor(QApplication::palette().color( + QPalette::Active, + QPalette::Highlight)); + } else + { + actind->setActiveColor(QApplication::palette().color( + QPalette::Active, + QPalette::BrightText)); + } + } +} diff --git a/src/tracks/InstrumentTrack.cpp b/src/tracks/InstrumentTrack.cpp index b44d1b4fa..58890d111 100644 --- a/src/tracks/InstrumentTrack.cpp +++ b/src/tracks/InstrumentTrack.cpp @@ -994,7 +994,6 @@ InstrumentTrackView::InstrumentTrackView( InstrumentTrack * _it, TrackContainerV m_activityIndicator, SLOT( activate() ) ); connect( _it, SIGNAL( endNote() ), m_activityIndicator, SLOT( noteEnd() ) ); - connect( &_it->m_mutedModel, SIGNAL( dataChanged() ), this, SLOT( muteChanged() ) ); setModel( _it ); } @@ -1223,22 +1222,6 @@ void InstrumentTrackView::midiConfigChanged() -void InstrumentTrackView::muteChanged() -{ - if(model()->m_mutedModel.value() ) - { - m_activityIndicator->setActiveColor( QApplication::palette().color( QPalette::Active, - QPalette::Highlight ) ); - } else - { - m_activityIndicator->setActiveColor( QApplication::palette().color( QPalette::Active, - QPalette::BrightText ) ); - } -} - - - - //FIXME: This is identical to SampleTrackView::createFxMenu QMenu * InstrumentTrackView::createFxMenu(QString title, QString newFxLabel) { From e056ecb27b8193e95e714bbe645796ccfaf3ed15 Mon Sep 17 00:00:00 2001 From: Andres Date: Thu, 7 Nov 2019 21:02:55 -0300 Subject: [PATCH 03/11] Added to sampletrackview the code needed for the activity indicator mute behaviour --- include/SampleTrack.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/SampleTrack.h b/include/SampleTrack.h index c8f94bcd9..dcac2053d 100644 --- a/include/SampleTrack.h +++ b/include/SampleTrack.h @@ -240,6 +240,10 @@ private: TrackLabelButton * m_tlb; + FadeButton * getActivityIndicator() + { + return m_activityIndicator; + } friend class SampleTrackWindow; From 229de18bc0608220e281249990296e5a908d91e7 Mon Sep 17 00:00:00 2001 From: Andres Date: Sun, 17 Nov 2019 23:05:16 -0300 Subject: [PATCH 04/11] Fixed triggering of stop animation when not playing --- include/SampleTrack.h | 6 ++++++ src/tracks/SampleTrack.cpp | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/SampleTrack.h b/include/SampleTrack.h index dcac2053d..cad43a15d 100644 --- a/include/SampleTrack.h +++ b/include/SampleTrack.h @@ -162,6 +162,11 @@ public: return "sampletrack"; } + bool wasPlaying() + { + return m_wasPlaying; + } + signals: void playing(); void notPlaying(); @@ -215,6 +220,7 @@ public: public slots: void showEffects(); + void stopPlaying(); protected: diff --git a/src/tracks/SampleTrack.cpp b/src/tracks/SampleTrack.cpp index afc6b89e7..83c8ba130 100644 --- a/src/tracks/SampleTrack.cpp +++ b/src/tracks/SampleTrack.cpp @@ -866,7 +866,7 @@ SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) : connect(_t, SIGNAL(notPlaying()), m_activityIndicator, SLOT(notPlaying())); connect(Engine::getSong(), SIGNAL(stopped()), - m_activityIndicator, SLOT(notPlaying())); + this, SLOT(stopPlaying())); setModel( _t ); @@ -982,6 +982,16 @@ void SampleTrackView::dropEvent(QDropEvent *de) +void SampleTrackView::stopPlaying() +{ + if (dynamic_cast(getTrack())->wasPlaying()) + { + m_activityIndicator->notPlaying(); + } +} + + + SampleTrackWindow::SampleTrackWindow(SampleTrackView * tv) : QWidget(), From df3e3883935fe71976f34ef97ce92f835985ccbf Mon Sep 17 00:00:00 2001 From: Andres Date: Tue, 19 Nov 2019 19:07:10 -0300 Subject: [PATCH 05/11] Fix triggering of stop animation when playing no samples after stopping song playing samples --- include/SampleTrack.h | 5 +++++ src/tracks/SampleTrack.cpp | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/SampleTrack.h b/include/SampleTrack.h index cad43a15d..4624e2a39 100644 --- a/include/SampleTrack.h +++ b/include/SampleTrack.h @@ -167,6 +167,11 @@ public: return m_wasPlaying; } + void setWasPlaying(bool wasPlaying) + { + m_wasPlaying = wasPlaying; + } + signals: void playing(); void notPlaying(); diff --git a/src/tracks/SampleTrack.cpp b/src/tracks/SampleTrack.cpp index 83c8ba130..7d3bdb581 100644 --- a/src/tracks/SampleTrack.cpp +++ b/src/tracks/SampleTrack.cpp @@ -984,9 +984,11 @@ void SampleTrackView::dropEvent(QDropEvent *de) void SampleTrackView::stopPlaying() { - if (dynamic_cast(getTrack())->wasPlaying()) + SampleTrack * smpltrck = dynamic_cast(getTrack()); + if (smpltrck->wasPlaying()) { m_activityIndicator->notPlaying(); + smpltrck->setWasPlaying(false); } } From b46ea0e9af5755c5305398adf763d7c2ae2688cc Mon Sep 17 00:00:00 2001 From: Spekular Date: Wed, 29 Apr 2020 20:44:09 +0200 Subject: [PATCH 06/11] refactor --- include/FadeButton.h | 2 +- include/SampleTrack.h | 16 ++++----- src/gui/widgets/FadeButton.cpp | 27 ++++++---------- src/tracks/SampleTrack.cpp | 59 +++++++++++----------------------- 4 files changed, 37 insertions(+), 67 deletions(-) diff --git a/include/FadeButton.h b/include/FadeButton.h index 4cd45893a..54703d194 100644 --- a/include/FadeButton.h +++ b/include/FadeButton.h @@ -46,8 +46,8 @@ public: public slots: void activate(); + void activateOnce(); void noteEnd(); - void notPlaying(); protected: diff --git a/include/SampleTrack.h b/include/SampleTrack.h index 4624e2a39..47cc0df39 100644 --- a/include/SampleTrack.h +++ b/include/SampleTrack.h @@ -162,19 +162,19 @@ public: return "sampletrack"; } - bool wasPlaying() + bool isPlaying() { - return m_wasPlaying; + return m_isPlaying; } - void setWasPlaying(bool wasPlaying) + void setPlaying(bool playing) { - m_wasPlaying = wasPlaying; + if (m_isPlaying != playing) { emit playingChanged(); } + m_isPlaying = playing; } signals: - void playing(); - void notPlaying(); + void playingChanged(); public slots: void updateTcos(); @@ -186,7 +186,7 @@ private: FloatModel m_panningModel; IntModel m_effectChannelModel; AudioPort m_audioPort; - bool m_wasPlaying; + bool m_isPlaying; @@ -225,7 +225,7 @@ public: public slots: void showEffects(); - void stopPlaying(); + void updateIndicator(); protected: diff --git a/src/gui/widgets/FadeButton.cpp b/src/gui/widgets/FadeButton.cpp index 95b8bbeb6..43f806144 100644 --- a/src/gui/widgets/FadeButton.cpp +++ b/src/gui/widgets/FadeButton.cpp @@ -75,6 +75,14 @@ void FadeButton::activate() +void FadeButton::activateOnce() +{ + if (activeNotes == 0) { activate(); } +} + + + + void FadeButton::noteEnd() { if (activeNotes <= 0) @@ -92,29 +100,12 @@ void FadeButton::noteEnd() m_releaseTimer.restart(); } - signalUpdate(); -} - - - - -void FadeButton::notPlaying() -{ - activeNotes = 0; - m_releaseTimer.restart(); - signalUpdate(); -} - - - - -void FadeButton::customEvent(QEvent *) -{ update(); } + void FadeButton::paintEvent(QPaintEvent * _pe) { QColor col = m_normalColor; diff --git a/src/tracks/SampleTrack.cpp b/src/tracks/SampleTrack.cpp index 7d3bdb581..f4dbedda2 100644 --- a/src/tracks/SampleTrack.cpp +++ b/src/tracks/SampleTrack.cpp @@ -593,7 +593,7 @@ SampleTrack::SampleTrack( TrackContainer* tc ) : this, tr( "Panning" ) ), m_effectChannelModel( 0, 0, 0, this, tr( "FX channel" ) ), m_audioPort( tr( "Sample track" ), true, &m_volumeModel, &m_panningModel, &m_mutedModel ), - m_wasPlaying(false) + m_isPlaying(false) { setName( tr( "Sample track" ) ); m_panningModel.setCenterValue( DefaultPanning ); @@ -618,27 +618,26 @@ bool SampleTrack::play( const MidiTime & _start, const fpp_t _frames, { m_audioPort.effects()->startRunning(); bool played_a_note = false; // will be return variable - bool is_playing = false; + bool nowPlaying = false; tcoVector tcos; ::BBTrack * bb_track = NULL; if( _tco_num >= 0 ) { - if (m_wasPlaying && _start > getTCO(_tco_num)->length()) + if (_start > getTCO(_tco_num)->length()) { - m_wasPlaying = false; - emit notPlaying(); + nowPlaying = false; } if( _start != 0 ) { + nowPlaying = false; return false; } tcos.push_back( getTCO( _tco_num ) ); if (trackContainer() == (TrackContainer*)Engine::getBBTrackContainer()) { bb_track = BBTrack::findBBTrack( _tco_num ); - m_wasPlaying = true; - emit playing(); + nowPlaying = true; } } else @@ -650,10 +649,6 @@ bool SampleTrack::play( const MidiTime & _start, const fpp_t _frames, if( _start >= sTco->startPosition() && _start < sTco->endPosition() ) { - if (sTco->isPlaying()) - { - is_playing = true; - } if( sTco->isPlaying() == false && _start > sTco->startPosition() + sTco->startTimeOffset() ) { auto bufferFramesPerTick = Engine::framesPerTick (sTco->sampleBuffer ()->sampleRate ()); @@ -670,7 +665,7 @@ bool SampleTrack::play( const MidiTime & _start, const fpp_t _frames, sTco->setSamplePlayLength( samplePlayLength ); tcos.push_back( sTco ); sTco->setIsPlaying( true ); - is_playing = true; + nowPlaying = true; } } } @@ -678,20 +673,10 @@ bool SampleTrack::play( const MidiTime & _start, const fpp_t _frames, { sTco->setIsPlaying( false ); } + nowPlaying = nowPlaying || sTco->isPlaying(); } - - if (is_playing && !m_wasPlaying) - { - m_wasPlaying = true; - emit playing(); - } - else if (!is_playing && m_wasPlaying) - { - m_wasPlaying = false; - emit notPlaying(); - } - } + setPlaying(nowPlaying); for( tcoVector::Iterator it = tcos.begin(); it != tcos.end(); ++it ) { @@ -861,10 +846,7 @@ SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) : getTrackSettingsWidget()); m_activityIndicator->setGeometry(settingsWidgetWidth-2*24-11, 2, 8, 28); m_activityIndicator->show(); - connect(_t, SIGNAL(playing()), - m_activityIndicator, SLOT(activate())); - connect(_t, SIGNAL(notPlaying()), - m_activityIndicator, SLOT(notPlaying())); + connect(_t, SIGNAL(playingChanged()), this, SLOT(updateIndicator())); connect(Engine::getSong(), SIGNAL(stopped()), this, SLOT(stopPlaying())); @@ -877,6 +859,15 @@ SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) : +void SampleTrackView::updateIndicator() +{ + if (model()->isPlaying()) m_activityIndicator->activateOnce(); + else { m_activityIndicator->noteEnd(); } +} + + + + SampleTrackView::~SampleTrackView() { if(m_window != NULL) @@ -982,18 +973,6 @@ void SampleTrackView::dropEvent(QDropEvent *de) -void SampleTrackView::stopPlaying() -{ - SampleTrack * smpltrck = dynamic_cast(getTrack()); - if (smpltrck->wasPlaying()) - { - m_activityIndicator->notPlaying(); - smpltrck->setWasPlaying(false); - } -} - - - SampleTrackWindow::SampleTrackWindow(SampleTrackView * tv) : QWidget(), From 5821466f18387c6dae624db315984e3e0a448309 Mon Sep 17 00:00:00 2001 From: Spekular Date: Wed, 29 Apr 2020 21:17:16 +0200 Subject: [PATCH 07/11] Fix indicator in BB editor --- src/tracks/SampleTrack.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/tracks/SampleTrack.cpp b/src/tracks/SampleTrack.cpp index f4dbedda2..060018656 100644 --- a/src/tracks/SampleTrack.cpp +++ b/src/tracks/SampleTrack.cpp @@ -618,7 +618,6 @@ bool SampleTrack::play( const MidiTime & _start, const fpp_t _frames, { m_audioPort.effects()->startRunning(); bool played_a_note = false; // will be return variable - bool nowPlaying = false; tcoVector tcos; ::BBTrack * bb_track = NULL; @@ -626,22 +625,22 @@ bool SampleTrack::play( const MidiTime & _start, const fpp_t _frames, { if (_start > getTCO(_tco_num)->length()) { - nowPlaying = false; + setPlaying(false); } if( _start != 0 ) { - nowPlaying = false; return false; } tcos.push_back( getTCO( _tco_num ) ); if (trackContainer() == (TrackContainer*)Engine::getBBTrackContainer()) { bb_track = BBTrack::findBBTrack( _tco_num ); - nowPlaying = true; + setPlaying(true); } } else { + bool nowPlaying = false; for( int i = 0; i < numOfTCOs(); ++i ) { TrackContentObject * tco = getTCO( i ); @@ -675,8 +674,8 @@ bool SampleTrack::play( const MidiTime & _start, const fpp_t _frames, } nowPlaying = nowPlaying || sTco->isPlaying(); } + setPlaying(nowPlaying); } - setPlaying(nowPlaying); for( tcoVector::Iterator it = tcos.begin(); it != tcos.end(); ++it ) { From ae2af96c9ad46268996559f5da91d010053caddc Mon Sep 17 00:00:00 2001 From: Spekular Date: Thu, 30 Apr 2020 18:06:06 +0200 Subject: [PATCH 08/11] Use nullptr instead of NULL Requested by Veratil --- include/Track.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Track.h b/include/Track.h index c08cfd4e3..29ed1f699 100644 --- a/include/Track.h +++ b/include/Track.h @@ -742,7 +742,7 @@ private: virtual FadeButton * getActivityIndicator() { - return NULL; + return nullptr; } friend class TrackLabelButton; From aaf94ef69dab60b016044671f4036d603b836e28 Mon Sep 17 00:00:00 2001 From: Spekular Date: Thu, 30 Apr 2020 22:07:00 +0200 Subject: [PATCH 09/11] Formatting chananges --- src/core/Track.cpp | 11 ++++++----- src/tracks/SampleTrack.cpp | 37 +++++++++++++++++-------------------- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/src/core/Track.cpp b/src/core/Track.cpp index de01457bb..2711f9944 100644 --- a/src/core/Track.cpp +++ b/src/core/Track.cpp @@ -3066,13 +3066,14 @@ void TrackView::muteChanged() if (m_track->m_mutedModel.value()) { actind->setActiveColor(QApplication::palette().color( - QPalette::Active, - QPalette::Highlight)); - } else + QPalette::Active, QPalette::Highlight + )); + } + else { actind->setActiveColor(QApplication::palette().color( - QPalette::Active, - QPalette::BrightText)); + QPalette::Active, QPalette::BrightText + )); } } } diff --git a/src/tracks/SampleTrack.cpp b/src/tracks/SampleTrack.cpp index 060018656..8d2ca8aba 100644 --- a/src/tracks/SampleTrack.cpp +++ b/src/tracks/SampleTrack.cpp @@ -585,21 +585,19 @@ void SampleTCOView::paintEvent( QPaintEvent * pe ) -SampleTrack::SampleTrack( TrackContainer* tc ) : - Track( Track::SampleTrack, tc ), - m_volumeModel( DefaultVolume, MinVolume, MaxVolume, 0.1f, this, - tr( "Volume" ) ), - m_panningModel( DefaultPanning, PanningLeft, PanningRight, 0.1f, - this, tr( "Panning" ) ), - m_effectChannelModel( 0, 0, 0, this, tr( "FX channel" ) ), - m_audioPort( tr( "Sample track" ), true, &m_volumeModel, &m_panningModel, &m_mutedModel ), +SampleTrack::SampleTrack(TrackContainer* tc) : + Track(Track::SampleTrack, tc), + m_volumeModel(DefaultVolume, MinVolume, MaxVolume, 0.1f, this, tr("Volume")), + m_panningModel(DefaultPanning, PanningLeft, PanningRight, 0.1f, this, tr("Panning")), + m_effectChannelModel(0, 0, 0, this, tr("FX channel")), + m_audioPort(tr("Sample track"), true, &m_volumeModel, &m_panningModel, &m_mutedModel), m_isPlaying(false) { - setName( tr( "Sample track" ) ); - m_panningModel.setCenterValue( DefaultPanning ); - m_effectChannelModel.setRange( 0, Engine::fxMixer()->numChannels()-1, 1); + setName(tr("Sample track")); + m_panningModel.setCenterValue(DefaultPanning); + m_effectChannelModel.setRange(0, Engine::fxMixer()->numChannels()-1, 1); - connect( &m_effectChannelModel, SIGNAL( dataChanged() ), this, SLOT( updateEffectChannel() ) ); + connect(&m_effectChannelModel, SIGNAL(dataChanged()), this, SLOT(updateEffectChannel())); } @@ -836,13 +834,12 @@ SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) : m_panningKnob->setLabel( tr( "PAN" ) ); m_panningKnob->show(); - m_activityIndicator = new FadeButton(QApplication::palette().color(QPalette::Active, - QPalette::Background), - QApplication::palette().color(QPalette::Active, - QPalette::BrightText), - QApplication::palette().color(QPalette::Active, - QPalette::BrightText).darker(), - getTrackSettingsWidget()); + m_activityIndicator = new FadeButton( + QApplication::palette().color(QPalette::Active, QPalette::Background), + QApplication::palette().color(QPalette::Active, QPalette::BrightText), + QApplication::palette().color(QPalette::Active, QPalette::BrightText).darker(), + getTrackSettingsWidget() + ); m_activityIndicator->setGeometry(settingsWidgetWidth-2*24-11, 2, 8, 28); m_activityIndicator->show(); connect(_t, SIGNAL(playingChanged()), this, SLOT(updateIndicator())); @@ -860,7 +857,7 @@ SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) : void SampleTrackView::updateIndicator() { - if (model()->isPlaying()) m_activityIndicator->activateOnce(); + if (model()->isPlaying()) { m_activityIndicator->activateOnce(); } else { m_activityIndicator->noteEnd(); } } From 0c180b8dc52327eddd1b3f4a55e22ba39d696db0 Mon Sep 17 00:00:00 2001 From: Spekular Date: Fri, 1 May 2020 12:27:41 +0200 Subject: [PATCH 10/11] Nicer spacing in activity indicator's setGeometry call Co-authored-by: Kevin Zander --- src/tracks/SampleTrack.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tracks/SampleTrack.cpp b/src/tracks/SampleTrack.cpp index 8d2ca8aba..f377e35cf 100644 --- a/src/tracks/SampleTrack.cpp +++ b/src/tracks/SampleTrack.cpp @@ -840,7 +840,7 @@ SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) : QApplication::palette().color(QPalette::Active, QPalette::BrightText).darker(), getTrackSettingsWidget() ); - m_activityIndicator->setGeometry(settingsWidgetWidth-2*24-11, 2, 8, 28); + m_activityIndicator->setGeometry(settingsWidgetWidth - 2 * 24 - 11, 2, 8, 28); m_activityIndicator->show(); connect(_t, SIGNAL(playingChanged()), this, SLOT(updateIndicator())); connect(Engine::getSong(), SIGNAL(stopped()), From 9ed5f80fe003e3ea21e3710c3dafd83d1fb1e701 Mon Sep 17 00:00:00 2001 From: Spekular Date: Fri, 1 May 2020 20:03:27 +0200 Subject: [PATCH 11/11] Refactor palette update on un/mute --- include/Track.h | 4 +++- src/core/Track.cpp | 27 +++++++++++---------------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/include/Track.h b/include/Track.h index 29ed1f699..07cee8ffd 100644 --- a/include/Track.h +++ b/include/Track.h @@ -745,12 +745,14 @@ private: return nullptr; } + void setIndicatorMute(FadeButton* indicator, bool muted); + friend class TrackLabelButton; private slots: void createTCOView( TrackContentObject * tco ); - void muteChanged (); + void muteChanged(); } ; diff --git a/src/core/Track.cpp b/src/core/Track.cpp index 2711f9944..f6b109280 100644 --- a/src/core/Track.cpp +++ b/src/core/Track.cpp @@ -3060,20 +3060,15 @@ void TrackView::createTCOView( TrackContentObject * tco ) void TrackView::muteChanged() { - FadeButton * actind = getActivityIndicator(); - if (actind) - { - if (m_track->m_mutedModel.value()) - { - actind->setActiveColor(QApplication::palette().color( - QPalette::Active, QPalette::Highlight - )); - } - else - { - actind->setActiveColor(QApplication::palette().color( - QPalette::Active, QPalette::BrightText - )); - } - } + FadeButton * indicator = getActivityIndicator(); + if (indicator) { setIndicatorMute(indicator, m_track->m_mutedModel.value()); } +} + + + + +void TrackView::setIndicatorMute(FadeButton* indicator, bool muted) +{ + QPalette::ColorRole role = muted ? QPalette::Highlight : QPalette::BrightText; + indicator->setActiveColor(QApplication::palette().color(QPalette::Active, role)); }