summaryrefslogtreecommitdiff
path: root/src/executableslist.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-09-09 01:25:01 -0400
committerGitHub <noreply@github.com>2019-09-09 01:25:01 -0400
commit99fdbb2539227cec4fab534efc7420cfc5ca1a92 (patch)
tree4fe70561a85d86b65cc4c6725541767684af09a7 /src/executableslist.cpp
parent73626b297904d50507bb7d5d1342120040e655e8 (diff)
parentd863e62c6e2f3c0daa50e16a0206f59558a7bb7e (diff)
Merge pull request #830 from isanae/settings-interface
Settings interface
Diffstat (limited to 'src/executableslist.cpp')
-rw-r--r--src/executableslist.cpp55
1 files changed, 26 insertions, 29 deletions
diff --git a/src/executableslist.cpp b/src/executableslist.cpp
index 3f76bb6f..dce9181b 100644
--- a/src/executableslist.cpp
+++ b/src/executableslist.cpp
@@ -21,6 +21,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "iplugingame.h"
#include "utility.h"
+#include "settings.h"
#include <log.h>
#include <QFileInfo>
@@ -64,7 +65,7 @@ bool ExecutablesList::empty() const
return m_Executables.empty();
}
-void ExecutablesList::load(const MOBase::IPluginGame* game, QSettings& settings)
+void ExecutablesList::load(const MOBase::IPluginGame* game, const Settings& s)
{
log::debug("loading executables");
@@ -74,32 +75,29 @@ void ExecutablesList::load(const MOBase::IPluginGame* game, QSettings& settings)
// executables from 2.2.0, see upgradeFromCustom()
bool needsUpgrade = false;
- int numCustomExecutables = settings.beginReadArray("customExecutables");
- for (int i = 0; i < numCustomExecutables; ++i) {
- settings.setArrayIndex(i);
-
+ for (auto& map : s.executables()) {
Executable::Flags flags;
- if (settings.value("toolbar", false).toBool())
+
+ if (map["toolbar"].toBool())
flags |= Executable::ShowInToolbar;
- if (settings.value("ownicon", false).toBool())
+
+ if (map["ownicon"].toBool())
flags |= Executable::UseApplicationIcon;
- if (settings.contains("custom")) {
+ if (map.contains("custom")) {
// the "custom" setting only exists in older versions
needsUpgrade = true;
}
setExecutable(Executable()
- .title(settings.value("title").toString())
- .binaryInfo(settings.value("binary").toString())
- .arguments(settings.value("arguments").toString())
- .steamAppID(settings.value("steamAppID", "").toString())
- .workingDirectory(settings.value("workingDirectory", "").toString())
+ .title(map["title"].toString())
+ .binaryInfo(map["binary"].toString())
+ .arguments(map["arguments"].toString())
+ .steamAppID(map["steamAppID"].toString())
+ .workingDirectory(map["workingDirectory"].toString())
.flags(flags));
}
- settings.endArray();
-
addFromPlugin(game, IgnoreExisting);
if (needsUpgrade)
@@ -108,26 +106,25 @@ void ExecutablesList::load(const MOBase::IPluginGame* game, QSettings& settings)
dump();
}
-void ExecutablesList::store(QSettings& settings)
+void ExecutablesList::store(Settings& s)
{
- settings.remove("customExecutables");
- settings.beginWriteArray("customExecutables");
-
- int count = 0;
+ std::vector<std::map<QString, QVariant>> v;
for (const auto& item : *this) {
- settings.setArrayIndex(count++);
+ std::map<QString, QVariant> map;
+
+ map["title"] = item.title();
+ map["toolbar"] = item.isShownOnToolbar();
+ map["ownicon"] = item.usesOwnIcon();
+ map["binary"] = item.binaryInfo().absoluteFilePath();
+ map["arguments"] = item.arguments();
+ map["workingDirectory"] = item.workingDirectory();
+ map["steamAppID"] = item.steamAppID();
- settings.setValue("title", item.title());
- settings.setValue("toolbar", item.isShownOnToolbar());
- settings.setValue("ownicon", item.usesOwnIcon());
- settings.setValue("binary", item.binaryInfo().absoluteFilePath());
- settings.setValue("arguments", item.arguments());
- settings.setValue("workingDirectory", item.workingDirectory());
- settings.setValue("steamAppID", item.steamAppID());
+ v.push_back(std::move(map));
}
- settings.endArray();
+ s.setExecutables(v);
}
std::vector<Executable> ExecutablesList::getPluginExecutables(