diff options
author | Daniel Schürmann <daschuer@mixxx.org> | 2021-04-28 09:38:57 +0200 |
---|---|---|
committer | Daniel Schürmann <daschuer@mixxx.org> | 2021-04-28 09:38:57 +0200 |
commit | 3f9d90c16e9e6e8256c25b7f3caad4e4d98aeff9 (patch) | |
tree | 0514da3c75ecd17f330134579a7e0d41af971488 /src/control | |
parent | c9f52dc1d115a5d8a1d77cad3a71121baadb25e8 (diff) | |
parent | 9ba57d6ad20920b1d413593ab40f5fc53ab717a4 (diff) |
Merge remote-tracking branch 'upstream/2.3' into main
Diffstat (limited to 'src/control')
-rw-r--r-- | src/control/controlpotmeter.cpp | 31 | ||||
-rw-r--r-- | src/control/controlpotmeter.h | 8 |
2 files changed, 31 insertions, 8 deletions
diff --git a/src/control/controlpotmeter.cpp b/src/control/controlpotmeter.cpp index 2c03d4d308..966f788295 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 1913513b91..14081207ea 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; |