From cf77e6923cae8b21b8319b7edf6102c80915b45a Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 3 Jun 2019 15:47:47 +0200 Subject: Refactor user .ini class, support "recent VMs" tab, misc. cleanup --- src/userconfig.cpp | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/userconfig.cpp (limited to 'src/userconfig.cpp') 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 +#include +#include + +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(); +} -- cgit v1.2.3-55-g7522