diff options
author | ronso0 <ronso0@mixxx.org> | 2021-04-27 12:35:01 +0200 |
---|---|---|
committer | ronso0 <ronso0@mixxx.org> | 2021-04-27 12:35:08 +0200 |
commit | 51f98cfe44bec2a65d535ba25abb4ebfd6080ad5 (patch) | |
tree | b3cfb638cf4cdc06bdf84bc5f6840026af0630c4 /src/control | |
parent | 46bbd67b3b233e6b775f4dbfe5ff1635e0cad52e (diff) |
make '_set_default' an in/out CO, use direct connection
Co-authored-by: Daniel Schürmann <daschuer@mixxx.org>
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; |