blob: 31ab9e9e0cbdf0c2ce795d95a687710d2244ab8f (
plain) (
tree)
|
|
#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 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();
}
}
|