diff options
author | RJ Ryan <rryan@mixxx.org> | 2014-01-13 00:15:28 -0500 |
---|---|---|
committer | RJ Ryan <rryan@mixxx.org> | 2014-01-13 00:15:28 -0500 |
commit | 0d8ff350b00dc92f52c245da86e90d151b1721f2 (patch) | |
tree | 65b33a33ee1f93168d7a7d12d15f7e9d35085fa5 /src/widget | |
parent | 9246ea7a4628a9f8cbe61c33982ce30c486feb1b (diff) |
Move effect widget setup out of LegacySkinParser and into the setup() method.
Diffstat (limited to 'src/widget')
-rw-r--r-- | src/widget/weffect.cpp | 49 | ||||
-rw-r--r-- | src/widget/weffect.h | 14 | ||||
-rw-r--r-- | src/widget/weffectchain.cpp | 37 | ||||
-rw-r--r-- | src/widget/weffectchain.h | 13 | ||||
-rw-r--r-- | src/widget/weffectparameter.cpp | 61 | ||||
-rw-r--r-- | src/widget/weffectparameter.h | 16 |
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", ¶meterOk) - 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; }; |