summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2016-10-10 18:39:32 +0200
committerSimon Rettberg2016-10-10 18:39:32 +0200
commit08ba648a4f59d7eb8aa1315a513bb2d4fe645cba (patch)
treededf277c7f4eed5bdf2800a2c86cedb4e16cfefc
parent[server] Fix parsing of command line arguments, init class members of ServerApp (diff)
downloadpvs2-08ba648a4f59d7eb8aa1315a513bb2d4fe645cba.tar.gz
pvs2-08ba648a4f59d7eb8aa1315a513bb2d4fe645cba.tar.xz
pvs2-08ba648a4f59d7eb8aa1315a513bb2d4fe645cba.zip
[client] Get rid of SYSTEM_SETTINGS macro, move to ClientApp
-rw-r--r--src/client/clientapp/clientapp.cpp19
-rw-r--r--src/client/clientapp/clientapp.h3
-rw-r--r--src/client/toolbar/toolbar.cpp43
-rw-r--r--src/client/util/util.h8
4 files changed, 42 insertions, 31 deletions
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<QSettings> ClientApp::getSettings()
+{
+ QSharedPointer<QSettings> set;
+ if (_iniPath == "") {
+ /* default location (system scope) */
+ set = QSharedPointer<QSettings>(new QSettings(QSettings::IniFormat, QSettings::SystemScope, "openslx/pvs2", "pvs2"));
+ } else {
+ /* use _iniPath to find ini file */
+ set = QSharedPointer<QSettings>(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<QSettings> 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<Room> 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<Room> Toolbar::myRooms()
QList<Room> 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<Room> Toolbar::myRooms()
break;
}
}
- conf.endArray();
+ conf->endArray();
}
- conf.endGroup();
+ conf->endGroup();
}
/* sort */
qStableSort(myRooms.begin(), myRooms.end(), qGreater<Room>());
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 <QDir>
#include <QTextStream>