From 9bacddf36631572b610f042e17b5ee631dfebbca Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Sun, 30 Oct 2022 12:03:43 +0100 Subject: Modernize cmake file and project structure a bit --- src/client/clientapp/clientapp.cpp | 6 +- src/client/connectwindow/connectwindow.cpp | 6 +- src/client/connectwindow/connectwindow.h | 1 + src/client/connectwindow/connectwindow.ui | 216 +++++++++++++ src/client/toolbar/toolbar.ui | 233 ++++++++++++++ src/server/mainwindow/mainwindow.cpp | 23 +- src/server/mainwindow/mainwindow.ui | 339 +++++++++++++++++++++ src/server/numerickeyboard/numerickeyboard.ui | 173 +++++++++++ src/server/reloadroomwindow/reloadroomwindow.cpp | 25 +- src/server/reloadroomwindow/reloadroomwindow.h | 15 +- src/server/reloadroomwindow/reloadroomwindow.ui | 73 +++++ src/server/sessionnamewindow/sessionnamewindow.cpp | 2 +- src/server/sessionnamewindow/sessionnamewindow.ui | 66 ++++ 13 files changed, 1157 insertions(+), 21 deletions(-) create mode 100644 src/client/connectwindow/connectwindow.ui create mode 100644 src/client/toolbar/toolbar.ui create mode 100644 src/server/mainwindow/mainwindow.ui create mode 100644 src/server/numerickeyboard/numerickeyboard.ui create mode 100644 src/server/reloadroomwindow/reloadroomwindow.ui create mode 100644 src/server/sessionnamewindow/sessionnamewindow.ui (limited to 'src') diff --git a/src/client/clientapp/clientapp.cpp b/src/client/clientapp/clientapp.cpp index 2447526..8131e6f 100644 --- a/src/client/clientapp/clientapp.cpp +++ b/src/client/clientapp/clientapp.cpp @@ -23,14 +23,14 @@ ClientApp::ClientApp(int& argc, char** argv) // System strings QTranslator *qtTranslator = new QTranslator(this); if (!qtTranslator->load(QLocale::system(), "qt", "_", QLibraryInfo::location(QLibraryInfo::TranslationsPath))) { - qDebug() << "Could not load system string translations"; + qDebug() << "Could not load system string translations" << QLocale::system() << QLibraryInfo::location(QLibraryInfo::TranslationsPath); } else { installTranslator(qtTranslator); } // App specific QTranslator *translator = new QTranslator(this); - if (!translator->load(QLocale::system(), ":", "l_")) { - qDebug() << "Could not load app translations"; + if (!translator->load(QLocale::system(), ":/", "l_")) { + qDebug() << "Could not load app translations" << QLocale::system(); } else { installTranslator(translator); } diff --git a/src/client/connectwindow/connectwindow.cpp b/src/client/connectwindow/connectwindow.cpp index 7674cc2..8c47eea 100644 --- a/src/client/connectwindow/connectwindow.cpp +++ b/src/client/connectwindow/connectwindow.cpp @@ -12,11 +12,15 @@ #include "../net/serverconnection.h" #include "../clientapp/clientapp.h" #include "connectwindow.h" -#include "ui_connect.h" +#include "ui_connectwindow.h" #define UDPBUFSIZ 9000 #define SALT_LEN 18 +namespace Ui { + class ConnectWindow; +} + /** * Initialize Connection Window. * @param parent diff --git a/src/client/connectwindow/connectwindow.h b/src/client/connectwindow/connectwindow.h index 9fcaf4e..2df672d 100644 --- a/src/client/connectwindow/connectwindow.h +++ b/src/client/connectwindow/connectwindow.h @@ -28,6 +28,7 @@ namespace Ui { class ConnectWindow; } + class ServerConnection; /** diff --git a/src/client/connectwindow/connectwindow.ui b/src/client/connectwindow/connectwindow.ui new file mode 100644 index 0000000..0bfc654 --- /dev/null +++ b/src/client/connectwindow/connectwindow.ui @@ -0,0 +1,216 @@ + + + ConnectWindow + + + Qt::WindowModal + + + + 0 + 0 + 512 + 233 + + + + + 512 + 92 + + + + Connect to PVS session + + + + + + false + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Connection + + + + + + Connect to + + + + + + + + + + + + + + 0 + 0 + + + + Manual Connection + + + + + + Session Name + + + + + + + + 0 + 0 + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + true + + + + 0 + 0 + + + + + 94 + 72 + + + + :/dark-green-check-mark.svg + + + true + + + + + + + + + + + 6 + + + + + Close + + + false + + + false + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Connect + + + true + + + true + + + + + + + + + + + + diff --git a/src/client/toolbar/toolbar.ui b/src/client/toolbar/toolbar.ui new file mode 100644 index 0000000..9908dda --- /dev/null +++ b/src/client/toolbar/toolbar.ui @@ -0,0 +1,233 @@ + + + Toolbar + + + + 0 + 0 + 281 + 28 + + + + Form + + + #Toolbar { + background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #f6f7fa, stop: 1 #dadbde); + border-radius: 0px; +} +QLabel { + background-color: none; +} +/* QPushButton */ +QPushButton { + background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #f6f7fa, stop: 1 #dadbde); + border: 2px solid #8f8f91; + border-radius: 4px; + min-width: 80px; +} +QPushButton:hover { + border: 2px solid rgb(0, 170, 255); +} +QPushButton:pressed { + background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #dadbde, stop: 1 #f6f7fa); +} +QPushButton:checked { + background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #cacbce, stop: 1 #e6e7ea); +} +QPushButton::menu-indicator { + image: url(:/darrow16.svg); +} + + + + + 1 + + + 2 + + + 2 + + + 2 + + + 2 + + + + + + 0 + 0 + + + + + 84 + 24 + + + + Menu + + + Menu + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + color:red + + + Offline + + + + + + + Qt::Horizontal + + + + 19 + 20 + + + + + + + + + 16 + 16 + + + + + 16 + 16 + + + + + + + true + + + + + + + + 10 + 75 + true + true + true + + + + color:#05f; + + + PVS + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + + + + 0 + 0 + + + + + 30 + 24 + + + + + 30 + 16777215 + + + + + 30 + 0 + + + + + 30 + 0 + + + + + + + + :/hand-raise + :/hand-raise-red:/hand-raise + + + + 22 + 22 + + + + true + + + + + + + + + + diff --git a/src/server/mainwindow/mainwindow.cpp b/src/server/mainwindow/mainwindow.cpp index f6ff566..b63545f 100644 --- a/src/server/mainwindow/mainwindow.cpp +++ b/src/server/mainwindow/mainwindow.cpp @@ -38,7 +38,6 @@ #include "../util/platform/screensaver.h" // Auto-generated ui class #include "ui_mainwindow.h" -#include "ui_reloadroom.h" #include #include @@ -711,20 +710,20 @@ void MainWindow::startVncServerIfNecessary(int from) void MainWindow::onButtonReloadRoomConfig() { - connect(_reloadWindow->ui->buttonBox, SIGNAL(accepted()), this, SLOT(onReloadRoomOk())); - connect(_reloadWindow->ui->buttonBox, SIGNAL(rejected()), this, SLOT(onReloadRoomCancel())); + connect(_reloadWindow->buttonBox(), SIGNAL(accepted()), this, SLOT(onReloadRoomOk())); + connect(_reloadWindow->buttonBox(), SIGNAL(rejected()), this, SLOT(onReloadRoomCancel())); QList keyList = serverApp->getRooms().keys(); for (QList::iterator it = keyList.begin(); it != keyList.end() ; it++) { - _reloadWindow->ui->roomList->addItem(*it); + _reloadWindow->addRoom(*it); } _reloadWindow->show(); } void MainWindow::onReloadRoomCancel() { - disconnect(_reloadWindow->ui->buttonBox, SIGNAL(accepted()), this, SLOT(onReloadRoomOk())); - disconnect(_reloadWindow->ui->buttonBox, SIGNAL(rejected()), this, SLOT(onReloadRoomCancel())); - _reloadWindow->ui->roomList->clear(); + disconnect(_reloadWindow->buttonBox(), SIGNAL(accepted()), this, SLOT(onReloadRoomOk())); + disconnect(_reloadWindow->buttonBox(), SIGNAL(rejected()), this, SLOT(onReloadRoomCancel())); + _reloadWindow->clearRoomList(); _reloadWindow->hide(); } @@ -785,7 +784,8 @@ void MainWindow::reloadCurrentRoom() void MainWindow::onReloadRoomOk() { - if (_reloadWindow->ui->roomList->currentItem() == nullptr) { + QString roomToReload = _reloadWindow->currentRoom(); + if (roomToReload.isEmpty()) { QMessageBox::critical(this, "Warning", tr("No item selected, please select room!"), 0, 1); return; } @@ -794,8 +794,8 @@ void MainWindow::onReloadRoomOk() "Note that all clients will be deleted."), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); if (ret == QMessageBox::Yes) { - disconnect(_reloadWindow->ui->buttonBox, SIGNAL(accepted()), this, SLOT(onReloadRoomOk())); - disconnect(_reloadWindow->ui->buttonBox, SIGNAL(rejected()), this, SLOT(onReloadRoomCancel())); + disconnect(_reloadWindow->buttonBox(), SIGNAL(accepted()), this, SLOT(onReloadRoomOk())); + disconnect(_reloadWindow->buttonBox(), SIGNAL(rejected()), this, SLOT(onReloadRoomCancel())); // Delete all clients. for (QList::iterator it = _clientFrames.begin(); it != _clientFrames.end(); it++) { (*it)->hide(); @@ -804,11 +804,10 @@ void MainWindow::onReloadRoomOk() _clientFrames.clear(); // Load new room configuration. - QString roomToReload = _reloadWindow->ui->roomList->currentItem()->data(0).toString(); serverApp->setCurrentRoom(roomToReload); reloadCurrentRoom(); - _reloadWindow->ui->roomList->clear(); + _reloadWindow->clearRoomList(); _reloadWindow->hide(); } diff --git a/src/server/mainwindow/mainwindow.ui b/src/server/mainwindow/mainwindow.ui new file mode 100644 index 0000000..62b92f7 --- /dev/null +++ b/src/server/mainwindow/mainwindow.ui @@ -0,0 +1,339 @@ + + + MainWindow + + + + 0 + 0 + 846 + 801 + + + + PVS2 Manager + + + QToolButton { + border-radius: 8px; + padding: 4px; + margin: 5px; + border: 1px solid #777; +} +QToolButton:enabled { +background-color: #f8f8f8; +border: 1px solid #555; +} +QToolButton:enabled:hover { + background: qradialgradient(cx: 0.4, cy: -0.1, +fx: 0.4, fy: -0.1, +radius: 1.35, stop: 0 #fff, stop: 1 #ddd); +} + +QToolButton:enabled:checked, +QToolButton:enabled:pressed { +background: qradialgradient(cx: 0.4, cy: -0.1, +fx: 0.4, fy: -0.1, +radius: 1.35, stop: 0 #888, stop: 1 #aaa); +} +QLabel#examModeLabel { + width: 71px; + margin: 5px; + border-radius: 8px; + background-color: rgb(170, 170, 170); +} + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 3 + + + + + QFrame::StyledPanel + + + QFrame::Sunken + + + 2 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 1 + 1 + + + + 0 + + + + + + + + + + + + + + + + toolBar + + + Qt::LeftToRight + + + true + + + false + + + + 48 + 48 + + + + LeftToolBarArea + + + false + + + + + + + + + + + + + + + + + + + :/exit + :/exit:/exit + + + Exit + + + Exit + + + Ctrl+Q + + + + + true + + + + :/lock:/lock + + + This will show a black screen on all connected clients, except the tutor's client. + + + Lock/Unlock all clients + + + Ctrl+A + + + + + + :/student2tutor:/student2tutor + + + Stream currently selected client's screen content to the tutor's client. + + + Student's Screen to Tutor + + + + + + :/student2tutorextension:/student2tutorextension + + + Stream currently selected client's screen content to the tutor's client while showing a locked black screen on all other clients. + + + Student's Screen to Tutor, others blanked + + + + + + :/tutor2student:/tutor2student + + + Stream the tutor's screen contents to the currently selected client. + + + Tutor's Screen to Student + + + + + + :/tutor2all:/tutor2all + + + Stream the tutor's screen contents to everyone. + + + Tutor's Screen to Everyone + + + + + + :/reset:/reset + + + Unlock all clients, stop any running screen content streaming. + + + Reset + + + R + + + + + + :/dozent:/dozent + + + Declare the currently selected client as tutor. The tutor will be excluded from screen locking and can be used as a fixed source/target for screen content streaming. + + + Declare tutor + + + T + + + + + + :/trash:/trash + + + Delete currently selected client. Only allowed for disconnected clients. + + + Delete Client + + + Del + + + true + + + + + + :/helpme:/helpme + + + Show this help text. + + + Help + + + F1 + + + true + + + + + + :/reloadClassroom:/reloadClassroom + + + This shows a list of preconfigured rooms which you can load. This will reset the currently shown layout and disconnect all clients. + + + Load a new room layout + + + + + + :/lock-single:/lock-single + + + Lock or unlock the selected client only. + + + Lock/Unlock single client + + + L + + + + + + + + + + diff --git a/src/server/numerickeyboard/numerickeyboard.ui b/src/server/numerickeyboard/numerickeyboard.ui new file mode 100644 index 0000000..2f83a2b --- /dev/null +++ b/src/server/numerickeyboard/numerickeyboard.ui @@ -0,0 +1,173 @@ + + + NumericKeyboard + + + + 0 + 0 + 438 + 300 + + + + + 0 + 300 + + + + GroupBox + + + Keyboard + + + + + + + 0 + 40 + + + + 0 + + + + + + + + 0 + 40 + + + + Del + + + + + + + + 0 + 40 + + + + 1 + + + + + + + + 0 + 40 + + + + 8 + + + + + + + + 0 + 40 + + + + 4 + + + + + + + + 0 + 40 + + + + 2 + + + + + + + + 0 + 40 + + + + 5 + + + + + + + + 0 + 40 + + + + 7 + + + + + + + + 0 + 40 + + + + 3 + + + + + + + + 0 + 40 + + + + 6 + + + + + + + + 0 + 40 + + + + 9 + + + + + + + + diff --git a/src/server/reloadroomwindow/reloadroomwindow.cpp b/src/server/reloadroomwindow/reloadroomwindow.cpp index 3070148..aea6a96 100644 --- a/src/server/reloadroomwindow/reloadroomwindow.cpp +++ b/src/server/reloadroomwindow/reloadroomwindow.cpp @@ -1,5 +1,5 @@ #include "reloadroomwindow.h" -#include "ui_reloadroom.h" +#include "ui_reloadroomwindow.h" ReloadRoomWindow::ReloadRoomWindow(QWidget *parent) : QDialog(parent), ui(new Ui::ReloadRoom) @@ -11,3 +11,26 @@ ReloadRoomWindow::~ReloadRoomWindow() { delete ui; } + +QDialogButtonBox *ReloadRoomWindow::buttonBox() const +{ + return ui->buttonBox; +} + +void ReloadRoomWindow::addRoom(const QString &roomName) +{ + ui->roomList->addItem(roomName); +} + +void ReloadRoomWindow::clearRoomList() +{ + ui->roomList->clear(); +} + +QString ReloadRoomWindow::currentRoom() const +{ + auto *cur = ui->roomList->currentItem(); + if (cur == nullptr) + return QLatin1String(); + return cur->data(0).toString(); +} diff --git a/src/server/reloadroomwindow/reloadroomwindow.h b/src/server/reloadroomwindow/reloadroomwindow.h index 2d2ae85..2baf53f 100644 --- a/src/server/reloadroomwindow/reloadroomwindow.h +++ b/src/server/reloadroomwindow/reloadroomwindow.h @@ -8,19 +8,28 @@ namespace Ui class ReloadRoom; } +class QDialogButtonBox; + class ReloadRoomWindow : public QDialog { Q_OBJECT public: - explicit ReloadRoomWindow(QWidget *parent = 0); + explicit ReloadRoomWindow(QWidget *parent = nullptr); ~ReloadRoomWindow(); - Ui::ReloadRoom *ui; - // void show(); + QDialogButtonBox* buttonBox() const; + + void addRoom(const QString &roomName); + + void clearRoomList(); + + QString currentRoom() const; private: + Ui::ReloadRoom *ui; + }; #endif diff --git a/src/server/reloadroomwindow/reloadroomwindow.ui b/src/server/reloadroomwindow/reloadroomwindow.ui new file mode 100644 index 0000000..2fb723e --- /dev/null +++ b/src/server/reloadroomwindow/reloadroomwindow.ui @@ -0,0 +1,73 @@ + + + ReloadRoom + + + + 0 + 0 + 432 + 400 + + + + Reload Room + + + true + + + + + + + 11 + + + + Choose room configuration to reload: + + + + + + + + 20 + PreferDefault + + + + Qt::DefaultContextMenu + + + Qt::LeftToRight + + + QListView::Adjust + + + + + + + + 20 + + + + * {font-size: 20pt;} + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + false + + + + + + + + diff --git a/src/server/sessionnamewindow/sessionnamewindow.cpp b/src/server/sessionnamewindow/sessionnamewindow.cpp index 5671c39..f79efbf 100644 --- a/src/server/sessionnamewindow/sessionnamewindow.cpp +++ b/src/server/sessionnamewindow/sessionnamewindow.cpp @@ -18,7 +18,7 @@ #include "sessionnamewindow.h" #include "../serverapp/serverapp.h" #include "../numerickeyboard/numerickeyboard.h" -#include "ui_sessionname.h" +#include "ui_sessionnamewindow.h" SessionNameWindow::SessionNameWindow(QWidget *parent) : diff --git a/src/server/sessionnamewindow/sessionnamewindow.ui b/src/server/sessionnamewindow/sessionnamewindow.ui new file mode 100644 index 0000000..299df3d --- /dev/null +++ b/src/server/sessionnamewindow/sessionnamewindow.ui @@ -0,0 +1,66 @@ + + + SessionName + + + Qt::ApplicationModal + + + + 0 + 0 + 400 + 226 + + + + + 0 + 0 + + + + Set session name + + + + + + New session name + + + + + + + + 14 + 75 + true + true + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + Random name + + + + + + + + -- cgit v1.2.3-55-g7522