summaryrefslogtreecommitdiffstats
path: root/src/client/toolbar/toolbar.cpp
diff options
context:
space:
mode:
authorChristian Klinger2016-05-18 16:53:12 +0200
committerChristian Klinger2016-05-18 16:53:12 +0200
commitd41aa490b2c00ffe31023b96b3daff523d4757c1 (patch)
treef1a2edb5c7db5a61d6c6073a74d3c1209fdfb25d /src/client/toolbar/toolbar.cpp
parentprovided sample configuration. (diff)
downloadpvs2-d41aa490b2c00ffe31023b96b3daff523d4757c1.tar.gz
pvs2-d41aa490b2c00ffe31023b96b3daff523d4757c1.tar.xz
pvs2-d41aa490b2c00ffe31023b96b3daff523d4757c1.zip
added toolbar button to switch to manager.
The actual window switching logic is delegated to a pair of shell scripts.
Diffstat (limited to 'src/client/toolbar/toolbar.cpp')
-rw-r--r--src/client/toolbar/toolbar.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/client/toolbar/toolbar.cpp b/src/client/toolbar/toolbar.cpp
index 83b1a9d..1f98a8b 100644
--- a/src/client/toolbar/toolbar.cpp
+++ b/src/client/toolbar/toolbar.cpp
@@ -88,6 +88,8 @@ void Toolbar::init()
/* Initialize the GUI */
_ui->setupUi(this);
+ _onWorkspace2 = false;
+
/* Set window properties */
setWindowFlags(Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint | Qt::FramelessWindowHint);
setAttribute(Qt::WA_AlwaysShowToolTips);
@@ -106,6 +108,12 @@ void Toolbar::init()
/* Setup menu */
initMenu();
+ /* setup manager button */
+ _isManagerPc = isManagerPc();
+ _ui->btnManager->setVisible(_isManagerPc);
+ connect(_ui->btnManager, SIGNAL(clicked()), this, SLOT(onBtnManager()));
+
+
/* Connect the signals from vnc server */
connect(VncServer::instance(), SIGNAL(started(int, QString&, QString&)), this, SLOT(onVncServerIsRunning(int)));
@@ -210,6 +218,30 @@ void Toolbar::enterEvent(QEvent* e)
*
*/
+
+/* returns true when the pc of this client is also eligible to be a manager */
+bool Toolbar::isManagerPc(){
+ QList<Room> myRooms;
+ SYSTEM_SETTINGS(conf);
+ 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) {
+ qDebug() << "this pc could be a manager of room " << roomName << "because this address is " << address;
+ return true;
+ }
+ }
+ conf.endGroup();
+ }
+ return false;
+}
+
/* returns a sorted list of available rooms.
* (Available means that this client is configured to be in that room) */
QList<Room> Toolbar::myRooms() {
@@ -407,3 +439,18 @@ void Toolbar::showBar()
const QRect primaryScreen = desktop.screenGeometry();
move(x(), primaryScreen.top());
}
+void Toolbar::onBtnManager() {
+ /* TODO */
+ qDebug() << "onBtnManager()";
+
+ /* call script to switch to workspace of the manager */
+ QProcess switchP;
+ if (_onWorkspace2) {
+ switchP.start("/bin/sh", QStringList() << "/opt/openslx/pvs2/switchBack.sh");
+ } else {
+ switchP.start("/bin/sh", QStringList() << "/opt/openslx/pvs2/switchToManager.sh");
+ }
+ _ui->btnManager->setDown(_onWorkspace2);
+ _onWorkspace2 = !_onWorkspace2;
+ switchP.waitForFinished();
+}