summaryrefslogtreecommitdiffstats
path: root/src/qml/qmleffectslotproxy.cpp
blob: 0e403f9887f0a1f3a8dba32f30f324d7c168c408 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "qml/qmleffectslotproxy.h"

#include <QObject>
#include <QQmlEngine>

#include "effects/effectrack.h"
#include "effects/effectslot.h"
#include "qml/qmleffectmanifestparametersmodel.h"

namespace mixxx {
namespace qml {

QmlEffectSlotProxy::QmlEffectSlotProxy(EffectRackPointer pRack,
        EffectChainSlotPointer pChainSlot,
        EffectSlotPointer pEffectSlot,
        QObject* parent)
        : QObject(parent),
          m_pRack(pRack),
          m_pChainSlot(pChainSlot),
          m_pEffectSlot(pEffectSlot) {
    DEBUG_ASSERT(m_pRack);
    DEBUG_ASSERT(m_pChainSlot);
    DEBUG_ASSERT(m_pEffectSlot);
    connect(m_pEffectSlot.get(),
            &EffectSlot::updated,
            this,
            &QmlEffectSlotProxy::effectIdChanged);
    connect(m_pEffectSlot.get(),
            &EffectSlot::updated,
            this,
            &QmlEffectSlotProxy::parametersModelChanged);
}

int QmlEffectSlotProxy::getRackNumber() const {
    return m_pRack->getRackNumber();
}

QString QmlEffectSlotProxy::getRackGroup() const {
    return m_pRack->getGroup();
}

int QmlEffectSlotProxy::getChainSlotNumber() const {
    return m_pChainSlot->getChainSlotNumber();
}

QString QmlEffectSlotProxy::getChainSlotGroup() const {
    return m_pChainSlot->getGroup();
}

int QmlEffectSlotProxy::getNumber() const {
    return m_pEffectSlot->getEffectSlotNumber();
}

QString QmlEffectSlotProxy::getGroup() const {
    return m_pEffectSlot->getGroup();
}

QString QmlEffectSlotProxy::getEffectId() const {
    const EffectPointer pEffect = m_pEffectSlot->getEffect();
    if (!pEffect) {
        return QString();
    }

    const EffectManifestPointer pManifest = pEffect->getManifest();
    return pManifest->id();
}

void QmlEffectSlotProxy::setEffectId(const QString& effectId) {
    m_pRack->maybeLoadEffect(
            m_pChainSlot->getChainSlotNumber(),
            m_pEffectSlot->getEffectSlotNumber(),
            effectId);
}

QmlEffectManifestParametersModel* QmlEffectSlotProxy::getParametersModel() const {
    const EffectPointer pEffect = m_pEffectSlot->getEffect();
    if (!pEffect) {
        return nullptr;
    }

    const EffectManifestPointer pManifest = pEffect->getManifest();
    VERIFY_OR_DEBUG_ASSERT(pManifest) {
        return nullptr;
    }

    QmlEffectManifestParametersModel* pModel = new QmlEffectManifestParametersModel(pManifest);
    QQmlEngine::setObjectOwnership(pModel, QQmlEngine::JavaScriptOwnership);
    return pModel;
}

} // namespace qml
} // namespace mixxx