1 #include "widget/weffect.h"
2 
3 #include <QtDebug>
4 
5 #include "effects/effectsmanager.h"
6 #include "moc_weffect.cpp"
7 #include "widget/effectwidgetutils.h"
8 
WEffect(QWidget * pParent,EffectsManager * pEffectsManager)9 WEffect::WEffect(QWidget* pParent, EffectsManager* pEffectsManager)
10         : WLabel(pParent),
11           m_pEffectsManager(pEffectsManager) {
12     effectUpdated();
13 }
14 
setup(const QDomNode & node,const SkinContext & context)15 void WEffect::setup(const QDomNode& node, const SkinContext& context) {
16     WLabel::setup(node, context);
17     // EffectWidgetUtils propagates NULLs so this is all safe.
18     EffectRackPointer pRack = EffectWidgetUtils::getEffectRackFromNode(
19             node, context, m_pEffectsManager);
20     EffectChainSlotPointer pChainSlot = EffectWidgetUtils::getEffectChainSlotFromNode(
21             node, context, pRack);
22     EffectSlotPointer pEffectSlot = EffectWidgetUtils::getEffectSlotFromNode(
23             node, context, pChainSlot);
24     if (pEffectSlot) {
25         setEffectSlot(pEffectSlot);
26     } else {
27         SKIN_WARNING(node, context)
28                 << "EffectName node could not attach to effect slot.";
29     }
30 }
31 
setEffectSlot(EffectSlotPointer pEffectSlot)32 void WEffect::setEffectSlot(EffectSlotPointer pEffectSlot) {
33     if (pEffectSlot) {
34         m_pEffectSlot = pEffectSlot;
35         connect(pEffectSlot.data(), &EffectSlot::updated, this, &WEffect::effectUpdated);
36         effectUpdated();
37     }
38 }
39 
effectUpdated()40 void WEffect::effectUpdated() {
41     QString name;
42     QString description;
43     if (m_pEffectSlot) {
44         EffectPointer pEffect = m_pEffectSlot->getEffect();
45         if (pEffect) {
46             EffectManifestPointer pManifest = pEffect->getManifest();
47             name = pManifest->displayName();
48             //: %1 = effect name; %2 = effect description
49             description = tr("%1: %2").arg(pManifest->name(), pManifest->description());
50         }
51     } else {
52         name = EffectsManager::kNoEffectString;
53         description = tr("No effect loaded.");
54     }
55     setText(name);
56     setBaseTooltip(description);
57 }
58