summaryrefslogtreecommitdiffstats
path: root/src/client/toolbar/toolbar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/toolbar/toolbar.cpp')
-rw-r--r--src/client/toolbar/toolbar.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/client/toolbar/toolbar.cpp b/src/client/toolbar/toolbar.cpp
index ddb55f1..a3e2c31 100644
--- a/src/client/toolbar/toolbar.cpp
+++ b/src/client/toolbar/toolbar.cpp
@@ -106,8 +106,10 @@ void Toolbar::init()
// Connect the signals
connect(clientApp->connectWindow(), SIGNAL(disconnect()), this, SLOT(onDoDisconnect()));
connect(clientApp->connectWindow(), SIGNAL(connected(ServerConnection*)), this, SLOT(onConnected(ServerConnection*)));
- connect(_ui->btnManager, SIGNAL(toggled(bool)), this, SLOT(onBtnManager()));
connect(_ui->btnAttention, SIGNAL(toggled(bool)), this, SLOT(onBtnAttention()));
+ connect(_ui->btnManager, &QPushButton::toggled, [=](bool pressed) {
+ this->toggleDesktop(pressed ? Desktop::Manager : Desktop::Primary);
+ });
/* Setup menu */
initMenu();
@@ -198,11 +200,14 @@ void Toolbar::updateButtonVisibility()
if (showManagerToggle == _ui->btnManager->isHidden()) {
// Visibility should change
if (showManagerToggle) {
- connect(_ui->btnManager, SIGNAL(toggled(bool)), this, SLOT(onBtnManager()));
+ _ui->btnManager->blockSignals(false);
setFixedWidth(width() + _ui->btnManager->width());
} else {
- disconnect(_ui->btnManager, SIGNAL(toggled(bool)), this, SLOT(onBtnManager()));
+ // Hide "toggle manager" -- assume manager was closed, switch to first desktop where the VM should be running
+ _ui->btnManager->blockSignals(true);
+ _ui->btnManager->setChecked(false);
setFixedWidth(width() - _ui->btnManager->width());
+ toggleDesktop(Desktop::Primary);
}
_ui->btnManager->setVisible(showManagerToggle);
}
@@ -497,14 +502,16 @@ void Toolbar::onBtnAttention()
}
/** call script to switch to workspace of the manager */
-void Toolbar::onBtnManager()
+void Toolbar::toggleDesktop(Desktop d)
{
QProcess switchP;
- const bool on = _ui->btnManager->isChecked();
- if (on) {
+ if (d == Desktop::Manager) {
switchP.start("/bin/sh", QStringList() << "/opt/openslx/pvs2/switchToManager.sh");
- } else {
+ } else if (d == Desktop::Primary) {
switchP.start("/bin/sh", QStringList() << "/opt/openslx/pvs2/switchBack.sh");
+ } else {
+ qDebug() << "Invalid toggleDesktop call";
+ return;
}
switchP.waitForFinished();
}
@@ -513,7 +520,6 @@ void Toolbar::onBtnLockDesktop()
{
if (this->lockDesktopP.state() == QProcess::NotRunning) {
_ui->btnLockDesktop->setEnabled(false);
- _ui->btnManager->setEnabled(false);
this->lockDesktopP.start("/bin/sh", QStringList() << "/opt/openslx/pvs2/lockDesktop.sh");
QTimer::singleShot(2 * 1000, this, SLOT(enableLockBtn()));
@@ -526,7 +532,6 @@ void Toolbar::onBtnLockDesktop()
void Toolbar::enableLockBtn()
{
_ui->btnLockDesktop->setEnabled(true);
- _ui->btnManager->setEnabled(true);
}
void Toolbar::setToolbarPosition(const QRect &availableGeometry)