From 6cb63e7e30906f428c601ba00fd15c14e07093cf Mon Sep 17 00:00:00 2001 From: Björn Hagemeister Date: Mon, 25 Aug 2014 18:08:15 +0200 Subject: Client is able to auto - connect to the same room belonging manager. --- src/client/toolbar/toolbar.cpp | 84 +++++++++++++++++++++++++++++++++++++++++- src/client/toolbar/toolbar.h | 2 + 2 files changed, 84 insertions(+), 2 deletions(-) (limited to 'src/client/toolbar') diff --git a/src/client/toolbar/toolbar.cpp b/src/client/toolbar/toolbar.cpp index 837bc08..0f90492 100644 --- a/src/client/toolbar/toolbar.cpp +++ b/src/client/toolbar/toolbar.cpp @@ -4,18 +4,20 @@ * Created on: 21.01.2013 * Author: sr */ +#include #include "../../shared/settings.h" #include "../net/serverconnection.h" #include "../vnc/vncwindow.h" #include "../vnc/vncserver.h" +#include "../util/util.h" #include "toolbar.h" #include "ui_toolbar.h" /***************************************************************************//** - * @brief Constructor of the Toolbar. + * @brief * * Does exact teh same as Toolbar::Toolbar(QWidget *parent) but additionally * instantly tries to connect to a pvsmgr with the given sessionName. @@ -27,7 +29,36 @@ Toolbar::Toolbar(const QByteArray sessionName, QWidget *parent) : Toolbar(parent) { - _connectWindow->connectToSession(sessionName); + qDebug() << "sessionName - constructor"; + _connectWindow->connectToSession(sessionName, NULL); +} + +/***************************************************************************//** + * @brief Constructor of the Toolbar. + * + * Does exact the same as Toolbar::Toolbar(QWidget *parent) but additionally + * instantly tries to connect to the pvsmgr in its room without sessionName. + * @param autoConnect + * @param parent + */ +Toolbar::Toolbar(const bool autoConnect, QWidget *parent) : Toolbar(parent) +{ + qDebug() << "auto - constructor!"; + + if (autoConnect) { + // Getting manager ip. + QString mgrIp = identifyMgrIP(); + qDebug() << "mgrIP: " << mgrIp; + if (mgrIp != NULL) { + qDebug() << "Starting WITH specific mgrIP"; + _connectWindow->connectToSession("", mgrIp); + } else { + qDebug() << "Starting WITHOUT specific mgrIP"; + _connectWindow->connectToSession("", NULL); + } + } else { + _connectWindow->connectToSession("", NULL); + } } /***************************************************************************//** @@ -144,6 +175,55 @@ void Toolbar::enterEvent(QEvent* e) QWidget::enterEvent(e); } +QString Toolbar::identifyMgrIP() +{ + SYSTEM_SETTINGS(conf); + qDebug() << "Settings contain" << conf.allKeys(); + + if (!conf.contains("rooms")) { + qDebug() << "Invalid config file!"; + return NULL; + } + + QStringList rooms = conf.value("rooms").toStringList(); + qDebug() << rooms; + + for (auto i : rooms) + { + qDebug() << "i: " << i; + conf.beginGroup(i); + if (!conf.contains("mgrIP")) { + qDebug() << "Invalid config file!"; + return NULL; + } + + // Find the managerIP of current room. + QString mgrIP = conf.value("mgrIP").toString(); + foreach (const QHostAddress &address, QNetworkInterface::allAddresses()) + { + int size = conf.beginReadArray("client"); + for (int j = 0; j < size; ++j) { + conf.setArrayIndex(j); + /* + * + * CFG to test this + * http://git.openslx.org/tm-scripts.git/plain/server/modules/pvs2-freiburg/etc/xdg/openslx/pvs2client.ini + * + */ + QString ip = conf.value("ip").toString(); + if (address != QHostAddress(QHostAddress::LocalHost) && ip == address.toString()) + { + qDebug("Found this ip in config."); + return mgrIP; + } + } + conf.endArray(); + } + conf.endGroup(); + } + return NULL; +} + /* * Slots */ diff --git a/src/client/toolbar/toolbar.h b/src/client/toolbar/toolbar.h index 80ddd69..84f6d2d 100644 --- a/src/client/toolbar/toolbar.h +++ b/src/client/toolbar/toolbar.h @@ -32,6 +32,7 @@ class Toolbar : public QWidget public: Toolbar(QWidget *parent = 0); Toolbar(const QByteArray sessionName, QWidget *parent = 0); + Toolbar(const bool autoConnect, QWidget *parent = 0); virtual ~Toolbar(); private: @@ -49,6 +50,7 @@ private: void leaveEvent(QEvent* e); void enterEvent(QEvent* e); + QString identifyMgrIP(); private slots: void onVncServerIsRunning(int port); -- cgit v1.2.3-55-g7522 From c01bee70a8ec082067d11cbf5dc093a74c403c5c Mon Sep 17 00:00:00 2001 From: Björn Hagemeister Date: Tue, 26 Aug 2014 14:28:36 +0200 Subject: Changed .ini file in client and manager from pvs2client.ini and pvs2mgr.ini to pvs2.ini, for having just one file. --- src/client/toolbar/toolbar.cpp | 8 +++++--- src/client/util/util.h | 4 ++-- src/server/util/util.h | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) (limited to 'src/client/toolbar') diff --git a/src/client/toolbar/toolbar.cpp b/src/client/toolbar/toolbar.cpp index 0f90492..1838166 100644 --- a/src/client/toolbar/toolbar.cpp +++ b/src/client/toolbar/toolbar.cpp @@ -39,14 +39,16 @@ Toolbar::Toolbar(const QByteArray sessionName, QWidget *parent) * Does exact the same as Toolbar::Toolbar(QWidget *parent) but additionally * instantly tries to connect to the pvsmgr in its room without sessionName. * @param autoConnect - * @param parent + * @param parent If parent is 0, the new widget becomes a window. If parent is + * another widget, this widget becomes a child window inside parent. The new + * widget is deleted when its parent is deleted. */ Toolbar::Toolbar(const bool autoConnect, QWidget *parent) : Toolbar(parent) { qDebug() << "auto - constructor!"; if (autoConnect) { - // Getting manager ip. + // Try getting manager ip. QString mgrIp = identifyMgrIP(); qDebug() << "mgrIP: " << mgrIp; if (mgrIp != NULL) { @@ -186,7 +188,7 @@ QString Toolbar::identifyMgrIP() } QStringList rooms = conf.value("rooms").toStringList(); - qDebug() << rooms; + // qDebug() << rooms; for (auto i : rooms) { diff --git a/src/client/util/util.h b/src/client/util/util.h index 82248c0..662599f 100644 --- a/src/client/util/util.h +++ b/src/client/util/util.h @@ -6,8 +6,8 @@ // Use like this: // USER_SETTINGS(settings) // settings.value("somekey") -#define USER_SETTINGS(name) QSettings name (QSettings::IniFormat, QSettings::UserScope, "openslx", "pvs2client") -#define SYSTEM_SETTINGS(name) QSettings name (QSettings::IniFormat, QSettings::SystemScope, "openslx", "pvs2client") +#define USER_SETTINGS(name) QSettings name (QSettings::IniFormat, QSettings::UserScope, "openslx", "pvs2") +#define SYSTEM_SETTINGS(name) QSettings name (QSettings::IniFormat, QSettings::SystemScope, "openslx", "pvs2") #include diff --git a/src/server/util/util.h b/src/server/util/util.h index e2d6a62..d142bdd 100644 --- a/src/server/util/util.h +++ b/src/server/util/util.h @@ -6,8 +6,8 @@ // Use like this: // USER_SETTINGS(settings) // settings.value("somekey") -#define USER_SETTINGS(name) QSettings name (QSettings::IniFormat, QSettings::UserScope, "openslx", "pvs2mgr") -#define SYSTEM_SETTINGS(name) QSettings name (QSettings::IniFormat, QSettings::SystemScope, "openslx", "pvs2mgr") +#define USER_SETTINGS(name) QSettings name (QSettings::IniFormat, QSettings::UserScope, "openslx", "pvs2") +#define SYSTEM_SETTINGS(name) QSettings name (QSettings::IniFormat, QSettings::SystemScope, "openslx", "pvs2") namespace Util { -- cgit v1.2.3-55-g7522