summaryrefslogtreecommitdiffstats
path: root/src/dialog.cpp
diff options
context:
space:
mode:
authorSimon Rettberg2019-03-01 14:53:39 +0100
committerSimon Rettberg2019-03-01 14:53:39 +0100
commit00d27f0b9f10154b0af6cd00c18fc27d38a708bf (patch)
treeb9338f254571c59498eeb40b55800134dcb4c700 /src/dialog.cpp
parentrework url params parsing (diff)
downloadvmchooser2-00d27f0b9f10154b0af6cd00c18fc27d38a708bf.tar.gz
vmchooser2-00d27f0b9f10154b0af6cd00c18fc27d38a708bf.tar.xz
vmchooser2-00d27f0b9f10154b0af6cd00c18fc27d38a708bf.zip
Add button to open beamergui
Diffstat (limited to 'src/dialog.cpp')
-rw-r--r--src/dialog.cpp38
1 files changed, 37 insertions, 1 deletions
diff --git a/src/dialog.cpp b/src/dialog.cpp
index 9472269..fb6b95e 100644
--- a/src/dialog.cpp
+++ b/src/dialog.cpp
@@ -22,6 +22,8 @@
#include "choosersettings.h"
#include "filedownloader.h"
+static bool isProcessRunning(const QString &binary);
+
Dialog::Dialog(int defaultTab, bool examMode, QWidget *parent)
: QDialog(parent), ui(new Ui::Dialog) {
model_[0] = new SessionTreeModel(parent);
@@ -86,9 +88,16 @@ Dialog::Dialog(int defaultTab, bool examMode, QWidget *parent)
this->selectPreviousSession();
}
- ui->chkAdminMode->setVisible(g_allowVmEdit);
+ ui->chkAdminMode->setVisible(g_allowVmEdit);
ui->chkAdminMode->setEnabled(false);
+ ui->btnScreenSetup->setVisible(isProcessRunning("beamergui"));
+ if (QApplication::screens().size() > 1) {
+ QFont copy = ui->btnScreenSetup->font();
+ copy.setBold(true);
+ ui->btnScreenSetup->setFont(copy);
+ }
+
// TODO: Implement bug report dialog :)
ui->buttonBugReport->setEnabled(false);
QObject::connect(SessionsIconHolder::get(), SIGNAL(iconDownloaded(const QUrl&, const QIcon&)),
@@ -245,6 +254,11 @@ void Dialog::on_pushButtonStart_clicked() {
this->on_treeView_doubleClicked(ui->treeView->selectionModel()->currentIndex());
}
+void Dialog::on_btnScreenSetup_clicked() {
+ qDebug() << "Wooo";
+ QProcess::startDetached("beamergui", QStringList("-w"));
+}
+
bool Dialog::selectSession(const QString& name) {
QModelIndex root(ui->treeView->rootIndex());
@@ -879,3 +893,25 @@ void Dialog::checkAutostart() {
return;
}
}
+
+static bool isProcessRunning(const QString &binary)
+{
+ bool full = binary.contains('/');
+ QDir proc("/proc");
+ for (auto entry : proc.entryInfoList(QStringList(), QDir::NoDotAndDotDot | QDir::AllDirs)) {
+ if (!entry.isReadable())
+ continue;
+ QDir dest = QDir(entry.filePath() + "/exe");
+ if (!dest.isReadable())
+ continue;
+ QString wurst = dest.canonicalPath();
+ if (wurst.isEmpty())
+ continue;
+ qDebug() << wurst;
+ if (full && wurst == binary)
+ return true;
+ if (!full && wurst.mid(wurst.lastIndexOf('/') + 1) == binary)
+ return true;
+ }
+ return false;
+}