summaryrefslogtreecommitdiffstats
path: root/src/client/clientapp/clientapp.cpp
diff options
context:
space:
mode:
authorSimon Rettberg2016-10-26 15:10:30 +0200
committerSimon Rettberg2016-10-26 15:10:30 +0200
commita780afe9f9ab9ac6938ee6d9919e2a70e9735cbb (patch)
treea5130c901737b905ad73c0b60af2ece46c222801 /src/client/clientapp/clientapp.cpp
parent[client] Create config dir before trying to create vnc password file inside (diff)
downloadpvs2-a780afe9f9ab9ac6938ee6d9919e2a70e9735cbb.tar.gz
pvs2-a780afe9f9ab9ac6938ee6d9919e2a70e9735cbb.tar.xz
pvs2-a780afe9f9ab9ac6938ee6d9919e2a70e9735cbb.zip
Fix GUI translation: Don't create persistent objects on stack :/
Diffstat (limited to 'src/client/clientapp/clientapp.cpp')
-rw-r--r--src/client/clientapp/clientapp.cpp44
1 files changed, 37 insertions, 7 deletions
diff --git a/src/client/clientapp/clientapp.cpp b/src/client/clientapp/clientapp.cpp
index e8f4f95..3b90dee 100644
--- a/src/client/clientapp/clientapp.cpp
+++ b/src/client/clientapp/clientapp.cpp
@@ -1,7 +1,8 @@
#include "clientapp.h"
+#include <QNetworkInterface>
ClientApp::ClientApp(int& argc, char** argv)
- : QApplication(argc, argv), _connectionMode(ConnectionMode::None), _examMode(false)
+ : QApplication(argc, argv), _connectionMode(ConnectionMode::None), _examMode(false), _isManagerPc(false)
{
/* some values */
setOrganizationName("openslx");
@@ -14,12 +15,16 @@ ClientApp::ClientApp(int& argc, char** argv)
/* parse parameters and keep the unparsed ones */
_arguments = parseParameters();
-
/* set translator */
- /* use system locale as language to translate gui */
- QTranslator translator;
- translator.load(":pvsclient");
- installTranslator(&translator);
+ // System strings
+ QTranslator *qtTranslator = new QTranslator(this);
+ qtTranslator->load("qt_" + QLocale::system().name(),
+ QLibraryInfo::location(QLibraryInfo::TranslationsPath));
+ installTranslator(qtTranslator);
+ // App specific
+ QTranslator *translator = new QTranslator(this);
+ translator->load(":pvsclient");
+ installTranslator(translator);
/* TODO: Move the connection handling to ClientApp */
if (_connectionMode == ConnectionMode::Auto) {
@@ -31,7 +36,9 @@ ClientApp::ClientApp(int& argc, char** argv)
}
_toolbar->setVisible(!_examMode);
-};
+ readIsManagerPc();
+
+}
/* parse arguments and return a list with the unused arguments */
QStringList ClientApp::parseParameters()
@@ -73,3 +80,26 @@ QSharedPointer<QSettings> ClientApp::getSettings()
return set;
}
+/* returns true when the pc of this client is also eligible to be a manager */
+void ClientApp::readIsManagerPc()
+{
+ QList<Room> myRooms;
+ 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();
+
+ foreach (const QHostAddress & address, QNetworkInterface::allAddresses()) {
+ QString ip = conf->value("ip").toString();
+ if (address.toString() == mgrIP) {
+ _isManagerPc = true;
+ return;
+ }
+ }
+ conf->endGroup();
+ }
+}
+