summaryrefslogtreecommitdiffstats
path: root/src/widget
diff options
context:
space:
mode:
authorRJ Ryan <rryan@mixxx.org>2014-01-13 00:15:28 -0500
committerRJ Ryan <rryan@mixxx.org>2014-01-13 00:15:28 -0500
commit0d8ff350b00dc92f52c245da86e90d151b1721f2 (patch)
tree65b33a33ee1f93168d7a7d12d15f7e9d35085fa5 /src/widget
parent9246ea7a4628a9f8cbe61c33982ce30c486feb1b (diff)
Move effect widget setup out of LegacySkinParser and into the setup() method.
Diffstat (limited to 'src/widget')
-rw-r--r--src/widget/weffect.cpp49
-rw-r--r--src/widget/weffect.h14
-rw-r--r--src/widget/weffectchain.cpp37
-rw-r--r--src/widget/weffectchain.h13
-rw-r--r--src/widget/weffectparameter.cpp61
-rw-r--r--src/widget/weffectparameter.h16
6 files changed, 173 insertions, 17 deletions
diff --git a/src/widget/weffect.cpp b/src/widget/weffect.cpp
index 08aacd59b9..a9944ed83b 100644
--- a/src/widget/weffect.cpp
+++ b/src/widget/weffect.cpp
@@ -1,12 +1,57 @@
+#include <QtDebug>
+
#include "widget/weffect.h"
-WEffect::WEffect(QWidget* pParent)
- : WLabel(pParent) {
+#include "effects/effectsmanager.h"
+
+WEffect::WEffect(QWidget* pParent, EffectsManager* pEffectsManager)
+ : WLabel(pParent),
+ m_pEffectsManager(pEffectsManager) {
+ effectUpdated();
}
WEffect::~WEffect() {
}
+void WEffect::setup(QDomNode node, const SkinContext& context) {
+ bool rackOk = false;
+ int rackNumber = context.selectInt(node, "EffectRack", &rackOk) - 1;
+ bool chainOk = false;
+ int chainNumber = context.selectInt(node, "EffectChain", &chainOk) - 1;
+ bool effectOk = false;
+ int effectNumber = context.selectInt(node, "Effect", &effectOk) - 1;
+
+ // Tolerate no <EffectRack>. Use the default one.
+ if (!rackOk) {
+ rackNumber = 0;
+ }
+
+ if (!chainOk) {
+ qDebug() << "EffectName node had invalid EffectChain number:" << chainNumber;
+ }
+
+ if (!effectOk) {
+ qDebug() << "EffectName node had invalid Effect number:" << effectNumber;
+ }
+
+ EffectRackPointer pRack = m_pEffectsManager->getEffectRack(rackNumber);
+ if (pRack) {
+ EffectChainSlotPointer pChainSlot = pRack->getEffectChainSlot(chainNumber);
+ if (pChainSlot) {
+ EffectSlotPointer pEffectSlot = pChainSlot->getEffectSlot(effectNumber);
+ if (pEffectSlot) {
+ setEffectSlot(pEffectSlot);
+ } else {
+ qDebug() << "EffectName node had invalid Effect number:" << effectNumber;
+ }
+ } else {
+ qDebug() << "EffectName node had invalid EffectChain number:" << chainNumber;
+ }
+ } else {
+ qDebug() << "EffectName node had invalid EffectRack number:" << rackNumber;
+ }
+}
+
void WEffect::setEffectSlot(EffectSlotPointer pEffectSlot) {
if (pEffectSlot) {
m_pEffectSlot = pEffectSlot;
diff --git a/src/widget/weffect.h b/src/widget/weffect.h
index 41ba29bc25..e3916941b5 100644
--- a/src/widget/weffect.h
+++ b/src/widget/weffect.h
@@ -1,22 +1,30 @@
#ifndef WEFFECT_H
#define WEFFECT_H
+#include <QDomNode>
+
#include "widget/wlabel.h"
#include "effects/effectslot.h"
+#include "skin/skincontext.h"
+
+class EffectsManager;
class WEffect : public WLabel {
Q_OBJECT
public:
- WEffect(QWidget* pParent=NULL);
+ WEffect(QWidget* pParent, EffectsManager* pEffectsManager);
virtual ~WEffect();
- // Set the EffectSlot that should be monitored by this WEffect.
- void setEffectSlot(EffectSlotPointer pEffectSlot);
+ void setup(QDomNode node, const SkinContext& context);
private slots:
void effectUpdated();
private:
+ // Set the EffectSlot that should be monitored by this WEffect.
+ void setEffectSlot(EffectSlotPointer pEffectSlot);
+
+ EffectsManager* m_pEffectsManager;
EffectSlotPointer m_pEffectSlot;
};
diff --git a/src/widget/weffectchain.cpp b/src/widget/weffectchain.cpp
index 20cf187219..94f2897099 100644
--- a/src/widget/weffectchain.cpp
+++ b/src/widget/weffectchain.cpp
@@ -1,12 +1,45 @@
+#include <QtDebug>
+
#include "widget/weffectchain.h"
+#include "effects/effectsmanager.h"
-WEffectChain::WEffectChain(QWidget* pParent)
- : WLabel(pParent) {
+WEffectChain::WEffectChain(QWidget* pParent, EffectsManager* pEffectsManager)
+ : WLabel(pParent),
+ m_pEffectsManager(pEffectsManager) {
+ chainUpdated();
}
WEffectChain::~WEffectChain() {
}
+void WEffectChain::setup(QDomNode node, const SkinContext& context) {
+ bool rackOk = false;
+ int rackNumber = context.selectInt(node, "EffectRack", &rackOk) - 1;
+ bool chainOk = false;
+ int chainNumber = context.selectInt(node, "EffectChain", &chainOk) - 1;
+
+ // Tolerate no <EffectRack>. Use the default one.
+ if (!rackOk) {
+ rackNumber = 0;
+ }
+
+ if (!chainOk) {
+ qDebug() << "EffectChainName node had invalid EffectChain number:" << chainNumber;
+ }
+
+ EffectRackPointer pRack = m_pEffectsManager->getEffectRack(rackNumber);
+ if (pRack) {
+ EffectChainSlotPointer pChainSlot = pRack->getEffectChainSlot(chainNumber);
+ if (pChainSlot) {
+ setEffectChainSlot(pChainSlot);
+ } else {
+ qDebug() << "EffectChainName node had invalid EffectChain number:" << chainNumber;
+ }
+ } else {
+ qDebug() << "EffectChainName node had invalid EffectRack number:" << rackNumber;
+ }
+}
+
void WEffectChain::setEffectChainSlot(EffectChainSlotPointer pEffectChainSlot) {
if (pEffectChainSlot) {
m_pEffectChainSlot = pEffectChainSlot;
diff --git a/src/widget/weffectchain.h b/src/widget/weffectchain.h
index 8d5457758c..ffc0eb9ced 100644
--- a/src/widget/weffectchain.h
+++ b/src/widget/weffectchain.h
@@ -3,23 +3,30 @@
#include <QWidget>
#include <QLabel>
+#include <QDomNode>
#include "effects/effectchainslot.h"
#include "widget/wlabel.h"
+#include "skin/skincontext.h"
+
+class EffectsManager;
class WEffectChain : public WLabel {
Q_OBJECT
public:
- WEffectChain(QWidget* pParent=NULL);
+ WEffectChain(QWidget* pParent, EffectsManager* pEffectsManager);
virtual ~WEffectChain();
- // Set the EffectChain that should be monitored by this WEffectChain
- void setEffectChainSlot(EffectChainSlotPointer pEffectChainSlot);
+ void setup(QDomNode node, const SkinContext& context);
private slots:
void chainUpdated();
private:
+ // Set the EffectChain that should be monitored by this WEffectChain
+ void setEffectChainSlot(EffectChainSlotPointer pEffectChainSlot);
+
+ EffectsManager* m_pEffectsManager;
EffectChainSlotPointer m_pEffectChainSlot;
};
diff --git a/src/widget/weffectparameter.cpp b/src/widget/weffectparameter.cpp
index 95c1d69285..3d1397bbfd 100644
--- a/src/widget/weffectparameter.cpp
+++ b/src/widget/weffectparameter.cpp
@@ -1,13 +1,68 @@
-#include "widget/weffectparameter.h"
+#include <QtDebug>
-WEffectParameter::WEffectParameter(QWidget* pParent)
- : WLabel(pParent) {
+#include "widget/weffectparameter.h"
+#include "effects/effectsmanager.h"
+WEffectParameter::WEffectParameter(QWidget* pParent, EffectsManager* pEffectsManager)
+ : WLabel(pParent),
+ m_pEffectsManager(pEffectsManager) {
+ parameterUpdated();
}
WEffectParameter::~WEffectParameter() {
}
+void WEffectParameter::setup(QDomNode node, const SkinContext& context) {
+ bool rackOk = false;
+ int rackNumber = context.selectInt(node, "EffectRack", &rackOk) - 1;
+ bool chainOk = false;
+ int chainNumber = context.selectInt(node, "EffectChain", &chainOk) - 1;
+ bool effectOk = false;
+ int effectNumber = context.selectInt(node, "Effect", &effectOk) - 1;
+ bool parameterOk = false;
+ int parameterNumber = context.selectInt(node, "EffectParameter", &parameterOk) - 1;
+
+ // Tolerate no <EffectRack>. Use the default one.
+ if (!rackOk) {
+ rackNumber = 0;
+ }
+
+ if (!chainOk) {
+ qDebug() << "EffectParameterName node had invalid EffectChain number:" << chainNumber;
+ }
+
+ if (!effectOk) {
+ qDebug() << "EffectParameterName node had invalid Effect number:" << effectNumber;
+ }
+
+ if (!parameterOk) {
+ qDebug() << "EffectParameterName node had invalid Parameter number:" << parameterNumber;
+ }
+
+ EffectRackPointer pRack = m_pEffectsManager->getEffectRack(rackNumber);
+ if (pRack) {
+ EffectChainSlotPointer pChainSlot = pRack->getEffectChainSlot(chainNumber);
+ if (pChainSlot) {
+ EffectSlotPointer pEffectSlot = pChainSlot->getEffectSlot(effectNumber);
+ if (pEffectSlot) {
+ EffectParameterSlotPointer pParameterSlot =
+ pEffectSlot->getEffectParameterSlot(parameterNumber);
+ if (pParameterSlot) {
+ setEffectParameterSlot(pParameterSlot);
+ } else {
+ qDebug() << "EffectParameterName node had invalid Parameter number:" << parameterNumber;
+ }
+ } else {
+ qDebug() << "EffectParameterName node had invalid Effect number:" << effectNumber;
+ }
+ } else {
+ qDebug() << "EffectParameterName node had invalid EffectChain number:" << chainNumber;
+ }
+ } else {
+ qDebug() << "EffectParameterName node had invalid EffectRack number:" << rackNumber;
+ }
+}
+
void WEffectParameter::setEffectParameterSlot(EffectParameterSlotPointer pEffectParameterSlot) {
if (pEffectParameterSlot) {
m_pEffectParameterSlot = pEffectParameterSlot;
diff --git a/src/widget/weffectparameter.h b/src/widget/weffectparameter.h
index 190aefb141..272bdb0da0 100644
--- a/src/widget/weffectparameter.h
+++ b/src/widget/weffectparameter.h
@@ -1,23 +1,31 @@
#ifndef WEFFECTPARAMETER_H
#define WEFFECTPARAMETER_H
+#include <QDomNode>
+
#include "widget/wlabel.h"
#include "effects/effectparameterslot.h"
+#include "skin/skincontext.h"
+
+class EffectsManager;
class WEffectParameter : public WLabel {
Q_OBJECT
public:
- WEffectParameter(QWidget* pParent=NULL);
+ WEffectParameter(QWidget* pParent, EffectsManager* pEffectsManager);
virtual ~WEffectParameter();
- // Set the EffectParameterSlot that should be monitored by this
- // WEffectParameter.
- void setEffectParameterSlot(EffectParameterSlotPointer pEffectParameterSlot);
+ void setup(QDomNode node, const SkinContext& context);
private slots:
void parameterUpdated();
private:
+ // Set the EffectParameterSlot that should be monitored by this
+ // WEffectParameter.
+ void setEffectParameterSlot(EffectParameterSlotPointer pEffectParameterSlot);
+
+ EffectsManager* m_pEffectsManager;
EffectParameterSlotPointer m_pEffectParameterSlot;
};