diff options
author | be_ <be.0@gmx.com> | 2016-12-25 12:14:46 -0600 |
---|---|---|
committer | be_ <be.0@gmx.com> | 2017-01-19 14:39:44 -0600 |
commit | d826eca898606138e2eebdb182491f6430fc22cd (patch) | |
tree | 9b8a6969caea409c5eacf9d617f7fb43dea5f64e /src/effects/effectchainmanager.cpp | |
parent | d7b45ea5466e3847e8a76e0ac9899db58f1cd10d (diff) |
save/load effect parameter state to XML on shutdown/startup
Diffstat (limited to 'src/effects/effectchainmanager.cpp')
-rw-r--r-- | src/effects/effectchainmanager.cpp | 23 |
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); } } |