diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/test/control_push_button_test.cpp | 59 | ||||
-rw-r--r-- | src/widget/wpushbutton.cpp | 12 | ||||
-rw-r--r-- | src/widget/wpushbutton.h | 2 |
3 files changed, 72 insertions, 1 deletions
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); |