summaryrefslogtreecommitdiffstats
path: root/src/userconfig.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/userconfig.cpp')
-rw-r--r--src/userconfig.cpp79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/userconfig.cpp b/src/userconfig.cpp
new file mode 100644
index 0000000..7f79015
--- /dev/null
+++ b/src/userconfig.cpp
@@ -0,0 +1,79 @@
+#include "userconfig.h"
+#include "globals.h"
+
+#include <QDebug>
+#include <QSettings>
+#include <QDir>
+
+static const QString PREVIOUS_SESSION_USER(QDir::homePath() + "/.config/openslx/vmchooser2.ini");
+static const QString KEY_LAST_SESSIONS("last-sessions");
+static const QString KEY_LAST_TAB("last-tab");
+static const QString KEY_LAST_NEWS("last-news");
+
+static QSettings *settings = nullptr;
+
+void UserConfig::init()
+{
+ if (settings != nullptr)
+ return;
+ QDir dir(QFileInfo(PREVIOUS_SESSION_USER).absoluteDir());
+ dir.mkpath(dir.path());
+ settings = new QSettings(PREVIOUS_SESSION_USER, QSettings::IniFormat);
+ if (settings->status() != QSettings::NoError) {
+ qDebug() << "Wiping old user config as it contains errors";
+ dir.remove(PREVIOUS_SESSION_USER);
+ settings->deleteLater();
+ settings = new QSettings(PREVIOUS_SESSION_USER, QSettings::IniFormat);
+ }
+ settings->setIniCodec("UTF-8");
+}
+
+void UserConfig::addLastSession(QString nameOrId)
+{
+ init();
+ auto list = getLastSessions();
+ list.removeAll(nameOrId);
+ list.push_back(nameOrId);
+ settings->setValue(KEY_LAST_SESSIONS, list);
+}
+
+QStringList UserConfig::getLastSessions()
+{
+ init();
+ auto ret = settings->value(KEY_LAST_SESSIONS).toStringList();
+ if (ret.isEmpty()) {
+ // Legacy
+ QString old = settings->value("last-session").toString();
+ if (!old.isEmpty()) {
+ ret.append(old);
+ }
+ }
+ while (ret.size() > 10) {
+ ret.pop_front();
+ }
+ return ret;
+}
+
+void UserConfig::setLastTab(int tab)
+{
+ init();
+ settings->setValue(KEY_LAST_TAB, tab);
+}
+
+int UserConfig::getLastTab()
+{
+ init();
+ return settings->value(KEY_LAST_TAB, -1).toInt();
+}
+
+void UserConfig::setLastNewsTime(uint t)
+{
+ init();
+ settings->setValue(KEY_LAST_NEWS, t);
+}
+
+uint UserConfig::getLastNewsTime()
+{
+ init();
+ return settings->value(KEY_LAST_NEWS).toUInt();
+}