From 4d4f25d1774659e0dfae8e60e13c494cab0f0a44 Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Mon, 5 Aug 2019 13:10:21 -0400 Subject: moved getting and setting executables to Settings --- src/executableslist.cpp | 54 +++++++++++++++++++++---------------------------- 1 file changed, 23 insertions(+), 31 deletions(-) (limited to 'src/executableslist.cpp') diff --git a/src/executableslist.cpp b/src/executableslist.cpp index 2b3219df..f2df2d6d 100644 --- a/src/executableslist.cpp +++ b/src/executableslist.cpp @@ -75,34 +75,29 @@ void ExecutablesList::load(const MOBase::IPluginGame* game, const Settings& s) // executables from 2.2.0, see upgradeFromCustom() bool needsUpgrade = false; - auto& settings = const_cast(s.directInterface()); - - int numCustomExecutables = settings.beginReadArray("customExecutables"); - for (int i = 0; i < numCustomExecutables; ++i) { - settings.setArrayIndex(i); - + for (auto& map : s.getExecutables()) { 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) @@ -113,26 +108,23 @@ void ExecutablesList::load(const MOBase::IPluginGame* game, const Settings& s) void ExecutablesList::store(Settings& s) { - auto& settings = s.directInterface(); + std::vector> v; - settings.remove("customExecutables"); - settings.beginWriteArray("customExecutables"); + for (const auto& item : *this) { + std::map map; - int count = 0; + 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(); - for (const auto& item : *this) { - settings.setArrayIndex(count++); - - 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 ExecutablesList::getPluginExecutables( -- cgit v1.3.1