summaryrefslogtreecommitdiff
path: root/src/settings.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-08-04 07:51:12 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-08-04 07:51:12 -0400
commitab14a8bac3368fc2c1005bcc33009b65a0c728f2 (patch)
tree788986ee198047dd62932d72f1c0ea56c491934c /src/settings.cpp
parent89415ca5c3903ced870d3bf5698dfa0e53122520 (diff)
moved recent directories to Settings
use global cache variable instead of an instance inside a function
Diffstat (limited to 'src/settings.cpp')
-rw-r--r--src/settings.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/settings.cpp b/src/settings.cpp
index 44aa56ba..cfc5c1d7 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -764,6 +764,45 @@ void Settings::writePluginBlacklist()
m_Settings.endArray();
}
+std::map<QString, QString> Settings::getRecentDirectories() const
+{
+ std::map<QString, QString> map;
+
+ const int size = m_Settings.beginReadArray("recentDirectories");
+
+ for (int i=0; i<size; ++i) {
+ m_Settings.setArrayIndex(i);
+
+ const QVariant name = m_Settings.value("name");
+ const QVariant dir = m_Settings.value("directory");
+
+ if (name.isValid() && dir.isValid()) {
+ map.emplace(name.toString(), dir.toString());
+ }
+ }
+
+ m_Settings.endArray();
+
+ return map;
+}
+
+void Settings::setRecentDirectories(const std::map<QString, QString>& map)
+{
+ m_Settings.remove("recentDirectories");
+ m_Settings.beginWriteArray("recentDirectories");
+
+ int index = 0;
+ for (auto&& p : map) {
+ m_Settings.setArrayIndex(index);
+ m_Settings.setValue("name", p.first);
+ m_Settings.setValue("directory", p.second);
+
+ ++index;
+ }
+
+ m_Settings.endArray();
+}
+
GeometrySettings& Settings::geometry()
{
return m_Geometry;