#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 const QString KEY_NEWS_OPEN("news-open"); 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() > 5) { 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(); } void UserConfig::setNewsHelpOpen(bool b) { init(); settings->setValue(KEY_NEWS_OPEN, b); } bool UserConfig::isNewsHelpOpen() { init(); return settings->value(KEY_NEWS_OPEN).toBool(); } void UserConfig::sync() { if (settings != nullptr) { settings->sync(); } }