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
|
#include "dlgprefeffects.h"
#include "effects/effectsmanager.h"
DlgPrefEffects::DlgPrefEffects(QWidget* pParent,
ConfigObject<ConfigValue>* pConfig,
EffectsManager* pEffectsManager)
: DlgPreferencePage(pParent),
m_pConfig(pConfig),
m_pEffectsManager(pEffectsManager) {
setupUi(this);
connect(availableEffectsList,
SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
this,
SLOT(slotEffectSelected(QListWidgetItem*, QListWidgetItem*)));
}
void DlgPrefEffects::slotUpdate() {
clear();
QStringList effectIds = m_pEffectsManager->getAvailableEffects();
foreach (QString id, effectIds) {
addEffectToList(id);
}
if (!effectIds.isEmpty()) {
availableEffectsList->setCurrentRow(0);
}
}
void DlgPrefEffects::addEffectToList(const QString& effectId) {
QPair<EffectManifest, EffectsBackend*> manifestAndBackend =
m_pEffectsManager->getEffectManifestAndBackend(effectId);
QListWidgetItem* pItem = new QListWidgetItem();
pItem->setText(manifestAndBackend.first.name());
pItem->setData(Qt::UserRole, effectId);
availableEffectsList->addItem(pItem);
}
void DlgPrefEffects::slotApply() {
// Nothing to apply.
}
void DlgPrefEffects::slotResetToDefaults() {
// Nothing to reset.
}
void DlgPrefEffects::clear() {
availableEffectsList->clear();
effectName->clear();
effectAuthor->clear();
effectDescription->clear();
effectVersion->clear();
effectType->clear();
}
void DlgPrefEffects::slotEffectSelected(QListWidgetItem* pCurrent,
QListWidgetItem* pPrevious) {
Q_UNUSED(pPrevious);
if (pCurrent == NULL) {
return;
}
QString effectId = pCurrent->data(Qt::UserRole).toString();
QPair<EffectManifest, EffectsBackend*> manifestAndBackend =
m_pEffectsManager->getEffectManifestAndBackend(effectId);
const EffectManifest& manifest = manifestAndBackend.first;
effectName->setText(manifest.name());
effectAuthor->setText(manifest.author());
effectDescription->setText(manifest.description());
effectVersion->setText(manifest.version());
if (manifestAndBackend.second != NULL) {
effectType->setText(manifestAndBackend.second->getName());
} else {
effectType->clear();
}
}
|