summaryrefslogtreecommitdiffstats
path: root/src/effects/effectchainmanager.cpp
diff options
context:
space:
mode:
authorbe_ <be.0@gmx.com>2016-12-25 12:14:46 -0600
committerbe_ <be.0@gmx.com>2017-01-19 14:39:44 -0600
commitd826eca898606138e2eebdb182491f6430fc22cd (patch)
tree9b8a6969caea409c5eacf9d617f7fb43dea5f64e /src/effects/effectchainmanager.cpp
parentd7b45ea5466e3847e8a76e0ac9899db58f1cd10d (diff)
save/load effect parameter state to XML on shutdown/startup
Diffstat (limited to 'src/effects/effectchainmanager.cpp')
-rw-r--r--src/effects/effectchainmanager.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/effects/effectchainmanager.cpp b/src/effects/effectchainmanager.cpp
index 315209cf48..524903864a 100644
--- a/src/effects/effectchainmanager.cpp
+++ b/src/effects/effectchainmanager.cpp
@@ -6,7 +6,6 @@
#include <QDir>
#include "effects/effectsmanager.h"
-#include "util/xml.h"
EffectChainManager::EffectChainManager(UserSettingsPointer pConfig,
EffectsManager* pEffectsManager)
@@ -163,32 +162,37 @@ bool EffectChainManager::saveEffectChains() {
return true;
}
-QList<EffectChainPointer> EffectChainManager::loadEffectChains() {
- QList<EffectChainPointer> loadedChains;
+QList<std::pair<EffectChainPointer, QDomElement>> EffectChainManager::loadEffectChains() {
+ // StandardEffectRack::addEffectChainSlot uses both the EffectChainPointer
+ // and the saved state from the XML to initialize the respective
+ // EffectChain/Effect/EffectParameter/EffectButtonParameter Slots
+ QList<std::pair<EffectChainPointer, QDomElement>> loadedChains;
QDir settingsPath(m_pConfig->getSettingsPath());
QFile file(settingsPath.absoluteFilePath("effects.xml"));
+ QDomDocument doc;
if (!file.open(QIODevice::ReadOnly)) {
EffectChainPointer pEmptyChain;
+ QDomElement emptyChainElement = doc.createElement("EffectChain");
for (int i = 0; i < 4; ++i) {
pEmptyChain = EffectChainPointer(new EffectChain(m_pEffectsManager,
QString(),
EffectChainPointer()));
- loadedChains.append(pEmptyChain);
+ loadedChains.append(std::make_pair(pEmptyChain, emptyChainElement));
}
return loadedChains;
}
- QDomDocument doc;
if (!doc.setContent(&file)) {
file.close();
EffectChainPointer pEmptyChain;
+ QDomElement emptyChainElement = doc.createElement("EffectChain");
for (int i = 0; i < 4; ++i) {
pEmptyChain = EffectChainPointer(new EffectChain(m_pEffectsManager,
QString(),
EffectChainPointer()));
- loadedChains.append(pEmptyChain);
+ loadedChains.append(std::make_pair(pEmptyChain, emptyChainElement));
}
return loadedChains;
}
@@ -203,10 +207,11 @@ QList<EffectChainPointer> EffectChainManager::loadEffectChains() {
QDomNode chainNode = chainsList.at(i);
if (chainNode.isElement()) {
- EffectChainPointer pChain = EffectChain::fromXML(
- m_pEffectsManager, chainNode.toElement());
+ QDomElement chainElement = chainNode.toElement();
+ EffectChainPointer pChain = EffectChain::createFromXml(
+ m_pEffectsManager, chainElement);
- loadedChains.append(pChain);
+ loadedChains.append(std::make_pair(pChain, chainElement));
m_effectChains.append(pChain);
}
}