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