summaryrefslogtreecommitdiffstats
path: root/src/control/controlpushbutton.cpp
blob: 119d20433d6e4d0742bf58a829940f0963011e58 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "control/controlpushbutton.h"

/* -------- ------------------------------------------------------
   Purpose: Creates a new simulated latching push-button.
   Input:   key - Key for the configuration file
   -------- ------------------------------------------------------ */
ControlPushButton::ControlPushButton(ConfigKey key, bool bPersist, double defaultValue)
        : ControlObject(key, false, false, bPersist, defaultValue),
          m_buttonMode(PUSH),
          m_iNoStates(2) {
    if (m_pControl) {
        m_pControl->setBehavior(
                new ControlPushButtonBehavior(
                        static_cast<ControlPushButtonBehavior::ButtonMode>(m_buttonMode),
                        m_iNoStates));
    }
}

ControlPushButton::~ControlPushButton() {
}

// Tell this PushButton how to act on rising and falling edges
void ControlPushButton::setButtonMode(enum ButtonMode mode) {
    //qDebug() << "Setting " << m_Key.group << m_Key.item << "as toggle";
    m_buttonMode = mode;

    if (m_pControl) {
        m_pControl->setBehavior(
                new ControlPushButtonBehavior(
                        static_cast<ControlPushButtonBehavior::ButtonMode>(m_buttonMode),
                        m_iNoStates));
    }
}

void ControlPushButton::setStates(int num_states) {
    m_iNoStates = num_states;

    if (m_pControl) {
            m_pControl->setBehavior(
                    new ControlPushButtonBehavior(
                            static_cast<ControlPushButtonBehavior::ButtonMode>(m_buttonMode),
                            m_iNoStates));
    }
}