From 08ba648a4f59d7eb8aa1315a513bb2d4fe645cba Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 10 Oct 2016 18:39:32 +0200 Subject: [client] Get rid of SYSTEM_SETTINGS macro, move to ClientApp --- src/client/clientapp/clientapp.cpp | 19 ++++++++++++++++- src/client/clientapp/clientapp.h | 3 +++ src/client/toolbar/toolbar.cpp | 43 +++++++++++++++++++------------------- src/client/util/util.h | 8 ------- 4 files changed, 42 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/client/clientapp/clientapp.cpp b/src/client/clientapp/clientapp.cpp index e1ef22c..5786e03 100644 --- a/src/client/clientapp/clientapp.cpp +++ b/src/client/clientapp/clientapp.cpp @@ -44,7 +44,9 @@ QStringList ClientApp::parseParameters() _connectionMode = ConnectionMode::Auto; } else if (a.startsWith("--session=")) { _connectionMode = ConnectionMode::Session; - _sessionName = a.replace("--session=", ""); + _sessionName = a.mid(10); + } else if (a.startsWith("--config=")) { + _iniPath = a.mid(9); } else { rest << a; } @@ -56,3 +58,18 @@ QStringList ClientApp::arguments() { return _arguments; } + +QSharedPointer ClientApp::getSettings() +{ + QSharedPointer set; + if (_iniPath == "") { + /* default location (system scope) */ + set = QSharedPointer(new QSettings(QSettings::IniFormat, QSettings::SystemScope, "openslx/pvs2", "pvs2")); + } else { + /* use _iniPath to find ini file */ + set = QSharedPointer(new QSettings(_iniPath, QSettings::IniFormat)); + } + set->setIniCodec("UTF-8"); + return set; +} + diff --git a/src/client/clientapp/clientapp.h b/src/client/clientapp/clientapp.h index e7e6e57..0569305 100644 --- a/src/client/clientapp/clientapp.h +++ b/src/client/clientapp/clientapp.h @@ -28,6 +28,7 @@ private: QString _sessionName; /* only set when _connectionMode == Session */ Toolbar* _toolbar; QStringList _arguments; + QString _iniPath; QStringList parseParameters(); @@ -38,4 +39,6 @@ public: bool isExamMode() const { return _examMode; }; virtual QStringList arguments(); + + QSharedPointer getSettings(); }; diff --git a/src/client/toolbar/toolbar.cpp b/src/client/toolbar/toolbar.cpp index 724836f..2ef9699 100644 --- a/src/client/toolbar/toolbar.cpp +++ b/src/client/toolbar/toolbar.cpp @@ -13,6 +13,7 @@ #include "../vnc/vncserver.h" #include "../util/util.h" #include "../informationdialog/informationdialog.h" +#include "../clientapp/clientapp.h" #include "toolbar.h" #include "ui_toolbar.h" @@ -117,8 +118,7 @@ void Toolbar::init() connect(_ui->btnManager, SIGNAL(clicked()), this, SLOT(onBtnManager())); /* setup lock desktop button*/ - SYSTEM_SETTINGS(conf); - bool showLock = conf.value("showLockDesktopButton").toBool(); + bool showLock = clientApp->getSettings()->value("showLockDesktopButton").toBool(); if (showLock) { connect(_ui->btnLockDesktop, SIGNAL(clicked()), this, SLOT(onBtnLockDesktop())); } else { @@ -170,9 +170,8 @@ void Toolbar::initMenu() _ui->cmdMenu->setMenu(_menu); /* only add a "quit"-button when the configuration allows it. */ - SYSTEM_SETTINGS(conf); - bool allow = conf.value("allowClientQuit").toBool(); + bool allow = clientApp->getSettings()->value("allowClientQuit").toBool(); _acnQuit->setVisible(allow); // Connect the signals @@ -237,21 +236,21 @@ void Toolbar::enterEvent(QEvent* e) bool Toolbar::isManagerPc() { QList myRooms; - SYSTEM_SETTINGS(conf); - QStringList roomNames = conf.value("rooms").toStringList(); + auto conf = clientApp->getSettings(); + QStringList roomNames = conf->value("rooms").toStringList(); /* go through all rooms and check if this client is a manager of the room. */ for (auto roomName : roomNames) { - conf.beginGroup(roomName); - QString mgrIP = conf.value("mgrIP").toString(); + conf->beginGroup(roomName); + QString mgrIP = conf->value("mgrIP").toString(); foreach (const QHostAddress & address, QNetworkInterface::allAddresses()) { - QString ip = conf.value("ip").toString(); + QString ip = conf->value("ip").toString(); if (address.toString() == mgrIP) { return true; } } - conf.endGroup(); + conf->endGroup(); } return false; } @@ -263,30 +262,30 @@ QList Toolbar::myRooms() QList myRooms; - SYSTEM_SETTINGS(conf); + auto conf = clientApp->getSettings(); - if (!conf.contains("rooms")) { + if (!conf->contains("rooms")) { qDebug() << "Invalid config file!"; return myRooms; } - QStringList roomNames = conf.value("rooms").toStringList(); + QStringList roomNames = conf->value("rooms").toStringList(); /* go through all rooms and check if this client is a member of the room. */ for (auto roomName : roomNames) { - conf.beginGroup(roomName); - if (!conf.contains("mgrIP")) { + conf->beginGroup(roomName); + if (!conf->contains("mgrIP")) { qDebug() << "Invalid config file!"; return myRooms; } - QString mgrIP = conf.value("mgrIP").toString(); - int priority = conf.value("priority").toInt(); + QString mgrIP = conf->value("mgrIP").toString(); + int priority = conf->value("priority").toInt(); foreach (const QHostAddress & address, QNetworkInterface::allAddresses()) { - int size = conf.beginReadArray("client"); + int size = conf->beginReadArray("client"); for (int j = 0; j < size; ++j) { - conf.setArrayIndex(j); - QString ip = conf.value("ip").toString(); + conf->setArrayIndex(j); + QString ip = conf->value("ip").toString(); if (address != QHostAddress(QHostAddress::LocalHost) && ip == address.toString() ) { /* add this room to the list */ @@ -295,9 +294,9 @@ QList Toolbar::myRooms() break; } } - conf.endArray(); + conf->endArray(); } - conf.endGroup(); + conf->endGroup(); } /* sort */ qStableSort(myRooms.begin(), myRooms.end(), qGreater()); diff --git a/src/client/util/util.h b/src/client/util/util.h index 1c91d56..89b19f4 100644 --- a/src/client/util/util.h +++ b/src/client/util/util.h @@ -1,14 +1,6 @@ #ifndef UTIL_H_ #define UTIL_H_ -// Helper for getting a settings object in various places, so if you ever change the organization, location, -// file format or anything, you won't have to edit in 100 places. -// Use like this: -// USER_SETTINGS(settings) -// settings.value("somekey") - -#define SYSTEM_SETTINGS(name) QSettings name (QSettings::IniFormat, QSettings::SystemScope, "openslx/pvs2", "pvs2") - #include #include -- cgit v1.2.3-55-g7522