summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/depends.py3
-rw-r--r--src/test/control_push_button_test.cpp59
-rw-r--r--src/widget/wpushbutton.cpp12
-rw-r--r--src/widget/wpushbutton.h2
4 files changed, 74 insertions, 2 deletions
diff --git a/build/depends.py b/build/depends.py
index b9549b1310..12e4e2d332 100644
--- a/build/depends.py
+++ b/build/depends.py
@@ -216,7 +216,8 @@ class Qt(Dependence):
'QT_TABLET_SUPPORT'])
qt_modules = [
'QtCore', 'QtGui', 'QtOpenGL', 'QtXml', 'QtSvg',
- 'QtSql', 'QtScript', 'QtXmlPatterns', 'QtNetwork'
+ 'QtSql', 'QtScript', 'QtXmlPatterns', 'QtNetwork',
+ 'QtTest'
]
if qt5:
diff --git a/src/test/control_push_button_test.cpp b/src/test/control_push_button_test.cpp
new file mode 100644
index 0000000000..bb0ccc7cd2
--- /dev/null
+++ b/src/test/control_push_button_test.cpp
@@ -0,0 +1,59 @@
+#include <gtest/gtest.h>
+
+#include <QApplication>
+#include <QTestEventList>
+#include <QScopedPointer>
+
+#include "mixxxtest.h"
+#include "controlobject.h"
+#include "controlpushbutton.h"
+#include "widget/wpushbutton.h"
+
+class ControlPushButtonTest : public MixxxTest {
+ public:
+ ControlPushButtonTest()
+ : m_pGroup("[Channel1]"),
+ m_argc(1),
+ m_argv("testApp") {
+ m_pApplication.reset(new QApplication(m_argc, m_argv));
+ }
+
+ protected:
+ virtual void SetUp() {
+ m_pButton.reset(new WPushButton());
+ m_pButton->setStates(2);
+ }
+
+ int m_argc;
+ const char* m_argv;
+ QScopedPointer<QApplication> m_pApplication;
+ QScopedPointer<WPushButton> m_pButton;
+ QTestEventList m_Events;
+ const char* m_pGroup;
+};
+
+TEST_F(ControlPushButtonTest, QuickPressNoLatchTest) {
+ m_pButton.reset(new WPushButton(NULL, ControlPushButton::LATCHING,
+ ControlPushButton::PUSH));
+
+ m_Events.addMousePress(Qt::LeftButton, 0, QPoint(), 100);
+ m_Events.addMouseRelease(Qt::LeftButton);
+
+ m_Events.simulate(m_pButton.data());
+
+ ASSERT_EQ(0.0, m_pButton->getValue());
+}
+
+TEST_F(ControlPushButtonTest, LongPressLatchTest) {
+ m_pButton.reset(new WPushButton(NULL, ControlPushButton::LATCHING,
+ ControlPushButton::PUSH));
+
+ m_Events.addMousePress(Qt::LeftButton, 0, QPoint(), 1000);
+ m_Events.addMouseRelease(Qt::LeftButton);
+
+ m_Events.simulate(m_pButton.data());
+
+ ASSERT_EQ(1.0, m_pButton->getValue());
+}
+
+
diff --git a/src/widget/wpushbutton.cpp b/src/widget/wpushbutton.cpp
index 55e5b41e04..846171266f 100644
--- a/src/widget/wpushbutton.cpp
+++ b/src/widget/wpushbutton.cpp
@@ -31,7 +31,7 @@
const int PB_SHORTKLICKTIME = 200;
-WPushButton::WPushButton(QWidget * parent) :
+WPushButton::WPushButton(QWidget *parent) :
WWidget(parent),
m_pPixmaps(NULL),
m_pPixmapBack(NULL),
@@ -41,6 +41,16 @@ WPushButton::WPushButton(QWidget * parent) :
//setBackgroundMode(Qt::NoBackground); //obsolete? removal doesn't seem to change anything on the GUI --kousu 2009/03
}
+WPushButton::WPushButton(QWidget *parent, ControlPushButton::ButtonMode leftButtonMode,
+ ControlPushButton::ButtonMode rightButtonMode) :
+ WWidget(parent),
+ m_pPixmaps(NULL),
+ m_pPixmapBack(NULL),
+ m_leftButtonMode(leftButtonMode),
+ m_rightButtonMode(rightButtonMode) {
+ setStates(0);
+}
+
WPushButton::~WPushButton() {
for (int i = 0; i < 2*m_iNoStates; i++) {
WPixmapStore::deletePixmap(m_pPixmaps[i]);
diff --git a/src/widget/wpushbutton.h b/src/widget/wpushbutton.h
index f700f1120d..c2c38084ba 100644
--- a/src/widget/wpushbutton.h
+++ b/src/widget/wpushbutton.h
@@ -38,6 +38,8 @@ class WPushButton : public WWidget
Q_OBJECT
public:
WPushButton(QWidget *parent=0);
+ WPushButton(QWidget *parent, ControlPushButton::ButtonMode leftButtonMode,
+ ControlPushButton::ButtonMode rightButtonMode);
~WPushButton();
void setup(QDomNode node);