summaryrefslogtreecommitdiff
path: root/src/filedialogmemory.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/filedialogmemory.cpp
parent89415ca5c3903ced870d3bf5698dfa0e53122520 (diff)
moved recent directories to Settings
use global cache variable instead of an instance inside a function
Diffstat (limited to 'src/filedialogmemory.cpp')
-rw-r--r--src/filedialogmemory.cpp53
1 files changed, 9 insertions, 44 deletions
diff --git a/src/filedialogmemory.cpp b/src/filedialogmemory.cpp
index 48828563..96587ac7 100644
--- a/src/filedialogmemory.cpp
+++ b/src/filedialogmemory.cpp
@@ -21,46 +21,18 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "settings.h"
#include <QFileDialog>
-
-FileDialogMemory::FileDialogMemory()
-{
-}
-
+static std::map<QString, QString> g_Cache;
void FileDialogMemory::save(Settings& s)
{
- auto& settings = s.directInterface();
-
- settings.remove("recentDirectories");
- settings.beginWriteArray("recentDirectories");
- int index = 0;
- for (std::map<QString, QString>::const_iterator iter = instance().m_Cache.begin();
- iter != instance().m_Cache.end(); ++iter) {
- settings.setArrayIndex(index++);
- settings.setValue("name", iter->first);
- settings.setValue("directory", iter->second);
- }
- settings.endArray();
+ s.setRecentDirectories(g_Cache);
}
-
void FileDialogMemory::restore(const Settings& s)
{
- auto& settings = const_cast<QSettings&>(s.directInterface());
-
- int size = settings.beginReadArray("recentDirectories");
- for (int i = 0; i < size; ++i) {
- settings.setArrayIndex(i);
- QVariant name = settings.value("name");
- QVariant dir = settings.value("directory");
- if (name.isValid() && dir.isValid()) {
- instance().m_Cache.insert(std::make_pair(name.toString(), dir.toString()));
- }
- }
- settings.endArray();
+ g_Cache = s.getRecentDirectories();
}
-
QString FileDialogMemory::getOpenFileName(
const QString &dirID, QWidget *parent, const QString &caption,
const QString &dir, const QString &filter, QString *selectedFilter,
@@ -69,8 +41,8 @@ QString FileDialogMemory::getOpenFileName(
QString currentDir = dir;
if (currentDir.isEmpty()) {
- auto itor = instance().m_Cache.find(dirID);
- if (itor != instance().m_Cache.end()) {
+ auto itor = g_Cache.find(dirID);
+ if (itor != g_Cache.end()) {
currentDir = itor->second;
}
}
@@ -79,7 +51,7 @@ QString FileDialogMemory::getOpenFileName(
parent, caption, currentDir, filter, selectedFilter, options);
if (!result.isNull()) {
- instance().m_Cache[dirID] = QFileInfo(result).path();
+ g_Cache[dirID] = QFileInfo(result).path();
}
return result;
@@ -93,8 +65,8 @@ QString FileDialogMemory::getExistingDirectory(
QString currentDir = dir;
if (currentDir.isEmpty()) {
- auto itor = instance().m_Cache.find(dirID);
- if (itor != instance().m_Cache.end()) {
+ auto itor = g_Cache.find(dirID);
+ if (itor != g_Cache.end()) {
currentDir = itor->second;
}
}
@@ -103,15 +75,8 @@ QString FileDialogMemory::getExistingDirectory(
parent, caption, currentDir, options);
if (!result.isNull()) {
- instance().m_Cache[dirID] = QFileInfo(result).path();
+ g_Cache[dirID] = result;
}
return result;
}
-
-
-FileDialogMemory &FileDialogMemory::instance()
-{
- static FileDialogMemory instance;
- return instance;
-}