diff --git a/res/skins/LateNight/decks/rate_controls.xml b/res/skins/LateNight/decks/rate_controls.xml index 342db917255a..e7bc5f2736fa 100644 --- a/res/skins/LateNight/decks/rate_controls.xml +++ b/res/skins/LateNight/decks/rate_controls.xml @@ -109,8 +109,7 @@ 5f,5f 2,59 - ,rate - 0.5 + ,rate_set_default highlight diff --git a/res/skins/LateNight/decks/rate_controls_compact.xml b/res/skins/LateNight/decks/rate_controls_compact.xml index e89e6af9cd76..ba5dfed699ef 100644 --- a/res/skins/LateNight/decks/rate_controls_compact.xml +++ b/res/skins/LateNight/decks/rate_controls_compact.xml @@ -113,8 +113,7 @@ 5f,5f 2,39 - ,rate - 0.5 + ,rate_set_default highlight @@ -174,8 +173,7 @@ 5f,5f 2,47 - ,rate - 0.5 + ,rate_set_default highlight diff --git a/src/control/controlpotmeter.cpp b/src/control/controlpotmeter.cpp index 2c03d4d30851..966f78829598 100644 --- a/src/control/controlpotmeter.cpp +++ b/src/control/controlpotmeter.cpp @@ -1,5 +1,6 @@ #include "control/controlpotmeter.h" +#include "control/control.h" #include "control/controlproxy.h" #include "control/controlpushbutton.h" #include "moc_controlpotmeter.cpp" @@ -20,10 +21,16 @@ ControlPotmeter::ControlPotmeter(const ConfigKey& key, if (!bPersist) { set(default_value); } - //qDebug() << "" << this << ", min " << m_dMinValue << ", max " << m_dMaxValue << ", range " << m_dValueRange << ", val " << m_dValue; -} + //qDebug() << "" << this << ", min " << dMinValue << ", max " << dMaxValue << ", default " << default_value; -ControlPotmeter::~ControlPotmeter() { + if (m_pControl) { + connect(m_pControl.data(), + &ControlDoublePrivate::valueChanged, + this, + &ControlPotmeter::privateValueChanged, + Qt::DirectConnection); + } + m_controls.setIsDefault(get() == default_value); } void ControlPotmeter::setStepCount(int count) { @@ -44,6 +51,12 @@ void ControlPotmeter::setRange(double dMinValue, double dMaxValue, } } +// slot +void ControlPotmeter::privateValueChanged(double dValue, QObject* pSender) { + Q_UNUSED(pSender); + m_controls.setIsDefault(dValue == defaultValue()); +} + PotmeterControls::PotmeterControls(const ConfigKey& key) : m_pControl(new ControlProxy(key, this)), m_stepCount(10), @@ -84,10 +97,10 @@ PotmeterControls::PotmeterControls(const ConfigKey& key) this, &PotmeterControls::decSmallValue); - ControlPushButton* controlDefault = new ControlPushButton( - ConfigKey(key.group, QString(key.item) + "_set_default")); - controlDefault->setParent(this); - connect(controlDefault, + m_pControlDefault = new ControlPushButton( + ConfigKey(key.group, QString(key.item) + "_set_default")); + m_pControlDefault->setParent(this); + connect(m_pControlDefault, &ControlPushButton::valueChanged, this, &PotmeterControls::setToDefault); @@ -202,3 +215,7 @@ void PotmeterControls::toggleMinusValue(double v) { m_pControl->set(value > 0.0 ? -1.0 : 1.0); } } + +void PotmeterControls::setIsDefault(bool isDefault) { + m_pControlDefault->forceSet(isDefault ? 1.0 : 0.0); +} diff --git a/src/control/controlpotmeter.h b/src/control/controlpotmeter.h index 1913513b914a..14081207eadb 100644 --- a/src/control/controlpotmeter.h +++ b/src/control/controlpotmeter.h @@ -41,9 +41,11 @@ class PotmeterControls : public QObject { void toggleValue(double); // Toggles the value between -1.0 and 0.0. void toggleMinusValue(double); + void setIsDefault(bool isDefault); private: ControlProxy* m_pControl; + ControlPushButton* m_pControlDefault; int m_stepCount; double m_smallStepCount; }; @@ -59,7 +61,7 @@ class ControlPotmeter : public ControlObject { bool bTrack = false, bool bPersist = false, double defaultValue = 0.0); - virtual ~ControlPotmeter(); + ~ControlPotmeter() override = default; // Sets the step count of the associated PushButtons. void setStepCount(int count); @@ -71,6 +73,10 @@ class ControlPotmeter : public ControlObject { // when calling this method void setRange(double dMinValue, double dMaxValue, bool allowOutOfBounds); + private slots: + // Used to check if the current control value matches the default value. + void privateValueChanged(double dValue, QObject* pSender); + protected: bool m_bAllowOutOfBounds; PotmeterControls m_controls;