diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-08-04 07:51:12 -0400 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2019-08-04 07:51:12 -0400 |
| commit | ab14a8bac3368fc2c1005bcc33009b65a0c728f2 (patch) | |
| tree | 788986ee198047dd62932d72f1c0ea56c491934c /src/settings.cpp | |
| parent | 89415ca5c3903ced870d3bf5698dfa0e53122520 (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.cpp | 39 |
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; |
