summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRJ Ryan <rryan@mixxx.org>2014-04-03 14:42:26 -0400
committerRJ Ryan <rryan@mixxx.org>2014-04-03 14:42:26 -0400
commitdca348fad5ebefe7e38f61db5ddae577b1917d21 (patch)
tree460af1267c165325c9de3b592429478fe0f9ff6d /src
parentd6b3b6167befc909a05b58e4991afdfc1307a695 (diff)
Supply parameter and value to widgets when a connected control changes. For WNumber (and other widgets) base updates on value. Fixes Bug #1301994.
Diffstat (limited to 'src')
-rw-r--r--src/widget/controlwidgetconnection.cpp6
-rw-r--r--src/widget/wbasewidget.h8
-rw-r--r--src/widget/wcombobox.cpp7
-rw-r--r--src/widget/wcombobox.h2
-rw-r--r--src/widget/wkey.cpp7
-rw-r--r--src/widget/wkey.h2
-rw-r--r--src/widget/wnumber.cpp6
-rw-r--r--src/widget/wnumber.h2
-rw-r--r--src/widget/woverview.cpp10
-rw-r--r--src/widget/woverview.h2
-rw-r--r--src/widget/wpushbutton.cpp7
-rw-r--r--src/widget/wpushbutton.h2
-rw-r--r--src/widget/wslidercomposed.cpp21
-rw-r--r--src/widget/wslidercomposed.h2
-rw-r--r--src/widget/wstatuslight.cpp7
-rw-r--r--src/widget/wstatuslight.h2
-rw-r--r--src/widget/wvumeter.cpp7
-rw-r--r--src/widget/wvumeter.h2
-rw-r--r--src/widget/wwidget.cpp7
-rw-r--r--src/widget/wwidget.h2
20 files changed, 68 insertions, 43 deletions
diff --git a/src/widget/controlwidgetconnection.cpp b/src/widget/controlwidgetconnection.cpp
index 39614a2b93..90b514aa42 100644
--- a/src/widget/controlwidgetconnection.cpp
+++ b/src/widget/controlwidgetconnection.cpp
@@ -70,10 +70,10 @@ QString ControlParameterWidgetConnection::toDebugString() const {
emitOptionToString(m_emitOption));
}
-void ControlParameterWidgetConnection::slotControlValueChanged(double v) {
+void ControlParameterWidgetConnection::slotControlValueChanged(double value) {
if (m_directionOption & DIR_TO_WIDGET) {
- double parameter = getControlParameterForValue(v);
- m_pWidget->onConnectedControlValueChanged(parameter);
+ double parameter = getControlParameterForValue(value);
+ m_pWidget->onConnectedControlChanged(parameter, value);
}
}
diff --git a/src/widget/wbasewidget.h b/src/widget/wbasewidget.h
index 0a51fa56fe..274c4ae96a 100644
--- a/src/widget/wbasewidget.h
+++ b/src/widget/wbasewidget.h
@@ -55,8 +55,12 @@ class WBaseWidget {
double getControlParameterDisplay() const;
protected:
- virtual void onConnectedControlValueChanged(double v) {
- Q_UNUSED(v);
+ // Whenever a connected control is changed, onConnectedControlChanged is
+ // called. This allows the widget implementor to respond to the change and
+ // gives them both the parameter and its corresponding value.
+ virtual void onConnectedControlChanged(double dParameter, double dValue) {
+ Q_UNUSED(dParameter);
+ Q_UNUSED(dValue);
}
void resetControlParameter();
diff --git a/src/widget/wcombobox.cpp b/src/widget/wcombobox.cpp
index 8f7f9ab358..d2d04b2482 100644
--- a/src/widget/wcombobox.cpp
+++ b/src/widget/wcombobox.cpp
@@ -39,8 +39,11 @@ bool WComboBox::event(QEvent* pEvent) {
return QComboBox::event(pEvent);
}
-void WComboBox::onConnectedControlValueChanged(double v) {
- int index = findData(static_cast<int>(v));
+void WComboBox::onConnectedControlChanged(double dParameter, double dValue) {
+ Q_UNUSED(dParameter);
+ // Enums are not currently represented using parameter space so it doesn't
+ // make sense to use the parameter here yet.
+ int index = findData(static_cast<int>(dValue));
if (index != -1) {
setCurrentIndex(index);
}
diff --git a/src/widget/wcombobox.h b/src/widget/wcombobox.h
index 7e5f071422..a5e67e50bc 100644
--- a/src/widget/wcombobox.h
+++ b/src/widget/wcombobox.h
@@ -16,7 +16,7 @@ class WComboBox : public QComboBox, public WBaseWidget {
void setup(QDomNode node, const SkinContext& context);
- void onConnectedControlValueChanged(double v);
+ void onConnectedControlChanged(double dParameter, double dValue);
protected:
bool event(QEvent* pEvent);
diff --git a/src/widget/wkey.cpp b/src/widget/wkey.cpp
index b271e08283..cbc19f6660 100644
--- a/src/widget/wkey.cpp
+++ b/src/widget/wkey.cpp
@@ -15,8 +15,11 @@ WKey::WKey(QWidget* pParent)
WKey::~WKey() {
}
-void WKey::onConnectedControlValueChanged(double v) {
- setValue(v);
+void WKey::onConnectedControlChanged(double dParameter, double dValue) {
+ Q_UNUSED(dParameter);
+ // Enums are not currently represented using parameter space so it doesn't
+ // make sense to use the parameter here yet.
+ setValue(dValue);
}
void WKey::setValue(double dValue) {
diff --git a/src/widget/wkey.h b/src/widget/wkey.h
index 5e58a01cae..f251a3f37f 100644
--- a/src/widget/wkey.h
+++ b/src/widget/wkey.h
@@ -12,7 +12,7 @@ class WKey : public WLabel {
WKey(QWidget* pParent=NULL);
virtual ~WKey();
- virtual void onConnectedControlValueChanged(double v);
+ virtual void onConnectedControlChanged(double dParameter, double dValue);
private slots:
void setValue(double dValue);
diff --git a/src/widget/wnumber.cpp b/src/widget/wnumber.cpp
index 6690257538..0299c01d77 100644
--- a/src/widget/wnumber.cpp
+++ b/src/widget/wnumber.cpp
@@ -47,8 +47,10 @@ void WNumber::setup(QDomNode node, const SkinContext& context) {
setValue(0.);
}
-void WNumber::onConnectedControlValueChanged(double v) {
- setValue(v);
+void WNumber::onConnectedControlChanged(double dParameter, double dValue) {
+ Q_UNUSED(dParameter);
+ // We show the actual control value instead of its parameter.
+ setValue(dValue);
}
void WNumber::setValue(double dValue) {
diff --git a/src/widget/wnumber.h b/src/widget/wnumber.h
index c542473c83..3b1db056f1 100644
--- a/src/widget/wnumber.h
+++ b/src/widget/wnumber.h
@@ -31,7 +31,7 @@ class WNumber : public WLabel {
virtual void setup(QDomNode node, const SkinContext& context);
- virtual void onConnectedControlValueChanged(double v);
+ virtual void onConnectedControlChanged(double dParameter, double dValue);
public slots:
virtual void setValue(double dValue);
diff --git a/src/widget/woverview.cpp b/src/widget/woverview.cpp
index 67defab390..861402faeb 100644
--- a/src/widget/woverview.cpp
+++ b/src/widget/woverview.cpp
@@ -133,14 +133,14 @@ void WOverview::setup(QDomNode node, const SkinContext& context) {
}
}
-void WOverview::onConnectedControlValueChanged(double dValue) {
- if (!m_bDrag)
- {
+void WOverview::onConnectedControlChanged(double dParameter, double dValue) {
+ Q_UNUSED(dValue);
+ if (!m_bDrag) {
// Calculate handle position
- int iPos = valueToPosition(dValue);
+ int iPos = valueToPosition(dParameter);
if (iPos != m_iPos) {
m_iPos = iPos;
- //qDebug() << "WOverview::onConnectedControlValueChanged" << dValue << ">>" << m_iPos;
+ //qDebug() << "WOverview::onConnectedControlChanged" << dParameter << ">>" << m_iPos;
update();
}
}
diff --git a/src/widget/woverview.h b/src/widget/woverview.h
index 2d2cfd5ca6..a1db61d7ad 100644
--- a/src/widget/woverview.h
+++ b/src/widget/woverview.h
@@ -39,7 +39,7 @@ class WOverview : public WWidget {
void setup(QDomNode node, const SkinContext& context);
public slots:
- void onConnectedControlValueChanged(double);
+ void onConnectedControlChanged(double dParameter, double dValue);
void slotLoadNewTrack(TrackPointer pTrack);
void slotTrackLoaded(TrackPointer pTrack);
void slotUnloadTrack(TrackPointer pTrack);
diff --git a/src/widget/wpushbutton.cpp b/src/widget/wpushbutton.cpp
index 13860d12ec..e75f992d61 100644
--- a/src/widget/wpushbutton.cpp
+++ b/src/widget/wpushbutton.cpp
@@ -220,9 +220,12 @@ void WPushButton::setPixmapBackground(const QString &filename,
}
}
-void WPushButton::onConnectedControlValueChanged(double v) {
+void WPushButton::onConnectedControlChanged(double dParameter, double dValue) {
+ Q_UNUSED(dParameter);
+ // Enums are not currently represented using parameter space so it doesn't
+ // make sense to use the parameter here yet.
if (m_iNoStates == 1) {
- m_bPressed = (v == 1.0);
+ m_bPressed = (dValue == 1.0);
}
update();
}
diff --git a/src/widget/wpushbutton.h b/src/widget/wpushbutton.h
index f74a24a42b..ea044cf8dd 100644
--- a/src/widget/wpushbutton.h
+++ b/src/widget/wpushbutton.h
@@ -55,7 +55,7 @@ class WPushButton : public WWidget {
void setStates(int iStatesW);
public slots:
- void onConnectedControlValueChanged(double);
+ void onConnectedControlChanged(double dParameter, double dValue);
protected:
virtual void paintEvent(QPaintEvent*);
diff --git a/src/widget/wslidercomposed.cpp b/src/widget/wslidercomposed.cpp
index a535f09cff..9d1a43050b 100644
--- a/src/widget/wslidercomposed.cpp
+++ b/src/widget/wslidercomposed.cpp
@@ -97,7 +97,8 @@ void WSliderComposed::setHandlePixmap(bool bHorizontal, const QString& filenameH
m_iHandleLength = m_bHorizontal ?
m_pHandle->width() : m_pHandle->height();
- onConnectedControlValueChanged(getControlParameter());
+ // Value is unused in WSliderComposed.
+ onConnectedControlChanged(getControlParameter(), 0);
update();
}
}
@@ -136,7 +137,7 @@ void WSliderComposed::mouseMoveEvent(QMouseEvent * e) {
}
// If we don't change this, then updates might be rejected in
- // onConnectedControlValueChanged.
+ // onConnectedControlChanged.
m_dOldValue = newValue;
// Emit valueChanged signal
@@ -158,7 +159,8 @@ void WSliderComposed::wheelEvent(QWheelEvent *e) {
newValue = math_max(0.0, math_min(1.0, newValue));
setControlParameter(newValue);
- onConnectedControlValueChanged(newValue);
+ // Value is unused in WSliderComposed.
+ onConnectedControlChanged(newValue, 0);
update();
e->accept();
@@ -216,16 +218,19 @@ void WSliderComposed::paintEvent(QPaintEvent *) {
}
}
-void WSliderComposed::onConnectedControlValueChanged(double dValue) {
- if (!m_bDrag && m_dOldValue != dValue) {
- m_dOldValue = dValue;
+void WSliderComposed::onConnectedControlChanged(double dParameter, double) {
+ // WARNING: The second parameter to this method is unused and called with
+ // invalid values in parts of WSliderComposed. Do not use it unless you fix
+ // this.
+ if (!m_bDrag && m_dOldValue != dParameter) {
+ m_dOldValue = dParameter;
// Calculate handle position
if (!m_bHorizontal) {
- dValue = 1.0 - dValue;
+ dParameter = 1.0 - dParameter;
}
int sliderLength = m_bHorizontal ? width() : height();
- m_iPos = static_cast<int>(dValue * (sliderLength - m_iHandleLength));
+ m_iPos = static_cast<int>(dParameter * (sliderLength - m_iHandleLength));
if (m_iPos > (sliderLength - m_iHandleLength)) {
m_iPos = sliderLength - m_iHandleLength;
diff --git a/src/widget/wslidercomposed.h b/src/widget/wslidercomposed.h
index 0ca1f8b615..b94adc9965 100644
--- a/src/widget/wslidercomposed.h
+++ b/src/widget/wslidercomposed.h
@@ -47,7 +47,7 @@ class WSliderComposed : public WWidget {
inline bool isHorizontal() const { return m_bHorizontal; };
public slots:
- void onConnectedControlValueChanged(double);
+ void onConnectedControlChanged(double dParameter, double dValue);
void fillDebugTooltip(QStringList* debug);
protected:
diff --git a/src/widget/wstatuslight.cpp b/src/widget/wstatuslight.cpp
index 0585826685..32817df906 100644
--- a/src/widget/wstatuslight.cpp
+++ b/src/widget/wstatuslight.cpp
@@ -116,8 +116,11 @@ void WStatusLight::setPixmap(int iState, const QString& filename, SizeMode mode)
}
}
-void WStatusLight::onConnectedControlValueChanged(double v) {
- int val = static_cast<int>(v);
+void WStatusLight::onConnectedControlChanged(double dParameter, double dValue) {
+ // Enums are not currently represented using parameter space so it doesn't
+ // make sense to use the parameter here yet.
+ Q_UNUSED(dParameter);
+ int val = static_cast<int>(dValue);
if (m_iPos == val) {
return;
}
diff --git a/src/widget/wstatuslight.h b/src/widget/wstatuslight.h
index 6f860b59eb..8faf6b8003 100644
--- a/src/widget/wstatuslight.h
+++ b/src/widget/wstatuslight.h
@@ -46,7 +46,7 @@ class WStatusLight : public WWidget {
static SizeMode SizeModeFromString(QString str);
public slots:
- void onConnectedControlValueChanged(double v);
+ void onConnectedControlChanged(double dParameter, double dValue);
protected:
void paintEvent(QPaintEvent *);
diff --git a/src/widget/wvumeter.cpp b/src/widget/wvumeter.cpp
index 27202737f5..45e356a234 100644
--- a/src/widget/wvumeter.cpp
+++ b/src/widget/wvumeter.cpp
@@ -105,15 +105,16 @@ void WVuMeter::setPixmaps(const QString &vuFilename,
}
}
-void WVuMeter::onConnectedControlValueChanged(double dValue) {
- int idx = static_cast<int>(dValue * m_iNoPos);
+void WVuMeter::onConnectedControlChanged(double dParameter, double dValue) {
+ Q_UNUSED(dValue);
+ int idx = static_cast<int>(dParameter * m_iNoPos);
// Range check
if (idx > m_iNoPos)
idx = m_iNoPos;
else if (idx < 0)
idx = 0;
- if (dValue > 0.) {
+ if (dParameter > 0.) {
setPeak(idx);
} else {
// A 0.0 value is very unlikely except when the VU Meter is disabled
diff --git a/src/widget/wvumeter.h b/src/widget/wvumeter.h
index 44e94319ed..1a0d7633f3 100644
--- a/src/widget/wvumeter.h
+++ b/src/widget/wvumeter.h
@@ -39,7 +39,7 @@ class WVuMeter : public WWidget {
void setPixmapBackground(const QString& filename);
void setPixmaps(const QString &vuFilename,
bool bHorizontal=false);
- void onConnectedControlValueChanged(double fValue);
+ void onConnectedControlChanged(double dParameter, double dValue);
protected slots:
void updateState(int msecsElapsed);
diff --git a/src/widget/wwidget.cpp b/src/widget/wwidget.cpp
index 977cd6aa91..21e1049861 100644
--- a/src/widget/wwidget.cpp
+++ b/src/widget/wwidget.cpp
@@ -23,7 +23,7 @@
WWidget::WWidget(QWidget* parent, Qt::WindowFlags flags)
: QWidget(parent, flags),
- WBaseWidget(this),
+ WBaseWidget(this),
m_activeTouchButton(Qt::NoButton) {
m_pTouchShift = new ControlObjectSlave("[Controls]", "touch_shift");
setAttribute(Qt::WA_StaticContents);
@@ -35,8 +35,9 @@ WWidget::~WWidget() {
delete m_pTouchShift;
}
-void WWidget::onConnectedControlValueChanged(double value) {
- Q_UNUSED(value);
+void WWidget::onConnectedControlChanged(double dParameter, double dValue) {
+ Q_UNUSED(dParameter);
+ Q_UNUSED(dValue);
update();
}
diff --git a/src/widget/wwidget.h b/src/widget/wwidget.h
index c4b32e9ca8..46fc969ace 100644
--- a/src/widget/wwidget.h
+++ b/src/widget/wwidget.h
@@ -45,7 +45,7 @@ class WWidget : public QWidget, public WBaseWidget {
Q_PROPERTY(double value READ getControlParameterDisplay);
- virtual void onConnectedControlValueChanged(double value);
+ virtual void onConnectedControlChanged(double dParameter, double dValue);
protected:
bool touchIsRightButton();