1 #include "engine/channels/enginechannel.h"
2
3 #include "control/controlobject.h"
4 #include "control/controlpushbutton.h"
5 #include "moc_enginechannel.cpp"
6
EngineChannel(const ChannelHandleAndGroup & handle_group,EngineChannel::ChannelOrientation defaultOrientation,EffectsManager * pEffectsManager,bool isTalkoverChannel,bool isPrimaryDeck)7 EngineChannel::EngineChannel(const ChannelHandleAndGroup& handle_group,
8 EngineChannel::ChannelOrientation defaultOrientation,
9 EffectsManager* pEffectsManager,
10 bool isTalkoverChannel,
11 bool isPrimaryDeck)
12 : m_group(handle_group),
13 m_pEffectsManager(pEffectsManager),
14 m_vuMeter(getGroup()),
15 m_pSampleRate(new ControlProxy("[Master]", "samplerate")),
16 m_sampleBuffer(nullptr),
17 m_bIsPrimaryDeck(isPrimaryDeck),
18 m_bIsTalkoverChannel(isTalkoverChannel),
19 m_channelIndex(-1) {
20 m_pPFL = new ControlPushButton(ConfigKey(getGroup(), "pfl"));
21 m_pPFL->setButtonMode(ControlPushButton::TOGGLE);
22 m_pMaster = new ControlPushButton(ConfigKey(getGroup(), "master"));
23 m_pMaster->setButtonMode(ControlPushButton::POWERWINDOW);
24 m_pOrientation = new ControlPushButton(ConfigKey(getGroup(), "orientation"));
25 m_pOrientation->setButtonMode(ControlPushButton::TOGGLE);
26 m_pOrientation->setStates(3);
27 m_pOrientation->set(defaultOrientation);
28 m_pOrientationLeft = new ControlPushButton(ConfigKey(getGroup(), "orientation_left"));
29 connect(m_pOrientationLeft, &ControlObject::valueChanged,
30 this, &EngineChannel::slotOrientationLeft, Qt::DirectConnection);
31 m_pOrientationRight = new ControlPushButton(ConfigKey(getGroup(), "orientation_right"));
32 connect(m_pOrientationRight, &ControlObject::valueChanged,
33 this, &EngineChannel::slotOrientationRight, Qt::DirectConnection);
34 m_pOrientationCenter = new ControlPushButton(ConfigKey(getGroup(), "orientation_center"));
35 connect(m_pOrientationCenter, &ControlObject::valueChanged,
36 this, &EngineChannel::slotOrientationCenter, Qt::DirectConnection);
37 m_pTalkover = new ControlPushButton(ConfigKey(getGroup(), "talkover"));
38 m_pTalkover->setButtonMode(ControlPushButton::POWERWINDOW);
39
40 if (m_pEffectsManager != nullptr) {
41 m_pEffectsManager->registerInputChannel(handle_group);
42 }
43 }
44
~EngineChannel()45 EngineChannel::~EngineChannel() {
46 delete m_pMaster;
47 delete m_pPFL;
48 delete m_pOrientation;
49 delete m_pOrientationLeft;
50 delete m_pOrientationRight;
51 delete m_pOrientationCenter;
52 delete m_pSampleRate;
53 delete m_pTalkover;
54 }
55
setPfl(bool enabled)56 void EngineChannel::setPfl(bool enabled) {
57 m_pPFL->set(enabled ? 1.0 : 0.0);
58 }
59
isPflEnabled() const60 bool EngineChannel::isPflEnabled() const {
61 return m_pPFL->toBool();
62 }
63
setMaster(bool enabled)64 void EngineChannel::setMaster(bool enabled) {
65 m_pMaster->set(enabled ? 1.0 : 0.0);
66 }
67
isMasterEnabled() const68 bool EngineChannel::isMasterEnabled() const {
69 return m_pMaster->toBool();
70 }
71
setTalkover(bool enabled)72 void EngineChannel::setTalkover(bool enabled) {
73 m_pTalkover->set(enabled ? 1.0 : 0.0);
74 }
75
isTalkoverEnabled() const76 bool EngineChannel::isTalkoverEnabled() const {
77 return m_pTalkover->toBool();
78 }
79
slotOrientationLeft(double v)80 void EngineChannel::slotOrientationLeft(double v) {
81 if (v > 0) {
82 m_pOrientation->set(LEFT);
83 }
84 }
85
slotOrientationRight(double v)86 void EngineChannel::slotOrientationRight(double v) {
87 if (v > 0) {
88 m_pOrientation->set(RIGHT);
89 }
90 }
91
slotOrientationCenter(double v)92 void EngineChannel::slotOrientationCenter(double v) {
93 if (v > 0) {
94 m_pOrientation->set(CENTER);
95 }
96 }
97
getOrientation() const98 EngineChannel::ChannelOrientation EngineChannel::getOrientation() const {
99 double dOrientation = m_pOrientation->get();
100 if (dOrientation == LEFT) {
101 return LEFT;
102 } else if (dOrientation == CENTER) {
103 return CENTER;
104 } else if (dOrientation == RIGHT) {
105 return RIGHT;
106 }
107 return CENTER;
108 }
109