summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjörn Hagemeister2014-08-25 14:57:41 +0200
committerBjörn Hagemeister2014-08-25 14:57:41 +0200
commit07fba5a835228f95ff6eec8419c905e4586bb56d (patch)
treef4c954c703c018e38884c6288cb990a7fcfbbfc6
parentMerge branch 'master' of git.openslx.org:pvs2 (diff)
downloadpvs2-07fba5a835228f95ff6eec8419c905e4586bb56d.tar.gz
pvs2-07fba5a835228f95ff6eec8419c905e4586bb56d.tar.xz
pvs2-07fba5a835228f95ff6eec8419c905e4586bb56d.zip
New Feature: Button for reloading room configuration of choosable room.
-rw-r--r--gui/server_normal/reloadroom.ui35
-rw-r--r--pvs2.config1
-rw-r--r--pvs2.creator1
-rw-r--r--pvs2.files90
-rw-r--r--pvs2.includes16
-rw-r--r--src/server/mainwindow/mainwindow.cpp82
-rw-r--r--src/server/mainwindow/mainwindow.h6
-rw-r--r--src/server/reloadroomwindow/reloadroomwindow.cpp16
-rw-r--r--src/server/reloadroomwindow/reloadroomwindow.h8
9 files changed, 220 insertions, 35 deletions
diff --git a/gui/server_normal/reloadroom.ui b/gui/server_normal/reloadroom.ui
index ab120a7..2013ed9 100644
--- a/gui/server_normal/reloadroom.ui
+++ b/gui/server_normal/reloadroom.ui
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
- <class>ScrollArea</class>
- <widget class="QScrollArea" name="ScrollArea">
+ <class>ReloadRoom</class>
+ <widget class="QDialog" name="ReloadRoom">
<property name="geometry">
<rect>
<x>0</x>
@@ -11,12 +11,12 @@
</rect>
</property>
<property name="windowTitle">
- <string>ScrollArea</string>
+ <string>Reload Room</string>
</property>
- <property name="widgetResizable">
+ <property name="widgetResizable" stdset="0">
<bool>true</bool>
</property>
- <widget class="QWidget" name="scrollAreaWidgetContents">
+ <widget class="QWidget" name="scrollAreaWidgetContents" native="true">
<property name="geometry">
<rect>
<x>0</x>
@@ -54,6 +54,31 @@
<bool>true</bool>
</property>
</widget>
+ <widget class="QListWidget" name="roomList">
+ <property name="geometry">
+ <rect>
+ <x>70</x>
+ <y>50</y>
+ <width>256</width>
+ <height>192</height>
+ </rect>
+ </property>
+ <property name="font">
+ <font>
+ <pointsize>20</pointsize>
+ <stylestrategy>PreferDefault</stylestrategy>
+ </font>
+ </property>
+ <property name="contextMenuPolicy">
+ <enum>Qt::DefaultContextMenu</enum>
+ </property>
+ <property name="layoutDirection">
+ <enum>Qt::LeftToRight</enum>
+ </property>
+ <property name="resizeMode">
+ <enum>QListView::Adjust</enum>
+ </property>
+ </widget>
</widget>
</widget>
<resources/>
diff --git a/pvs2.config b/pvs2.config
new file mode 100644
index 0000000..8cec188
--- /dev/null
+++ b/pvs2.config
@@ -0,0 +1 @@
+// ADD PREDEFINED MACROS HERE!
diff --git a/pvs2.creator b/pvs2.creator
new file mode 100644
index 0000000..e94cbbd
--- /dev/null
+++ b/pvs2.creator
@@ -0,0 +1 @@
+[General]
diff --git a/pvs2.files b/pvs2.files
new file mode 100644
index 0000000..1c0e283
--- /dev/null
+++ b/pvs2.files
@@ -0,0 +1,90 @@
+build/CMakeFiles/2.8.12.2/CompilerIdC/CMakeCCompilerId.c
+build/CMakeFiles/2.8.12.2/CompilerIdCXX/CMakeCXXCompilerId.cpp
+build/src/client/connectwindow/moc_connectwindow.cxx
+build/src/client/net/moc_serverconnection.cxx
+build/src/client/net/moc_serverdiscovery.cxx
+build/src/client/toolbar/moc_toolbar.cxx
+build/src/client/util/platform/moc_blankscreen.cxx
+build/src/client/util/moc_util.cxx
+build/src/client/vnc/moc_vncserver.cxx
+build/src/client/vnc/moc_vncthread.cxx
+build/src/client/vnc/moc_vncwindow.cxx
+build/src/server/clicklabel/moc_clicklabel.cxx
+build/src/server/connectionframe/moc_connectionframe.cxx
+build/src/server/helpwindow/moc_helpwindow.cxx
+build/src/server/mainwindow/moc_mainwindow.cxx
+build/src/server/net/moc_certmanager.cxx
+build/src/server/net/moc_client.cxx
+build/src/server/net/moc_discoverylistener.cxx
+build/src/server/net/moc_filedownloader.cxx
+build/src/server/net/moc_listenserver.cxx
+build/src/server/net/moc_sslserver.cxx
+build/src/server/reloadroomwindow/moc_reloadroomwindow.cxx
+build/src/server/reloadwindow/moc_reloadwindow.cxx
+build/src/server/sessionnamewindow/moc_sessionnamewindow.cxx
+build/src/server/util/moc_global.cxx
+build/src/server/util/moc_util.cxx
+build/qrc_pvsclient.cxx
+build/qrc_pvsmgr.cxx
+build/ui_connect.h
+build/ui_help.h
+build/ui_mainwindow.h
+build/ui_reloadroom.h
+build/ui_sessionname.h
+build/ui_toolbar.h
+src/client/connectwindow/connectwindow.cpp
+src/client/connectwindow/connectwindow.h
+src/client/net/serverconnection.cpp
+src/client/net/serverconnection.h
+src/client/net/serverdiscovery.cpp
+src/client/net/serverdiscovery.h
+src/client/toolbar/toolbar.cpp
+src/client/toolbar/toolbar.h
+src/client/util/platform/blankscreen.h
+src/client/util/platform/blankscreen_Win32.cpp
+src/client/util/platform/blankscreen_X11.cpp
+src/client/util/util.cpp
+src/client/util/util.h
+src/client/vnc/vncserver.cpp
+src/client/vnc/vncserver.h
+src/client/vnc/vncthread.cpp
+src/client/vnc/vncthread.h
+src/client/vnc/vncwindow.cpp
+src/client/vnc/vncwindow.h
+src/client/main.cpp
+src/server/clicklabel/clicklabel.cpp
+src/server/clicklabel/clicklabel.h
+src/server/connectionframe/connectionframe.cpp
+src/server/connectionframe/connectionframe.h
+src/server/helpwindow/helpwindow.cpp
+src/server/helpwindow/helpwindow.h
+src/server/mainwindow/mainwindow.cpp
+src/server/mainwindow/mainwindow.h
+src/server/net/certmanager.cpp
+src/server/net/certmanager.h
+src/server/net/client.cpp
+src/server/net/client.h
+src/server/net/discoverylistener.cpp
+src/server/net/discoverylistener.h
+src/server/net/filedownloader.cpp
+src/server/net/filedownloader.h
+src/server/net/listenserver.cpp
+src/server/net/listenserver.h
+src/server/net/sslserver.cpp
+src/server/net/sslserver.h
+src/server/reloadroomwindow/reloadroomwindow.cpp
+src/server/reloadroomwindow/reloadroomwindow.h
+src/server/sessionnamewindow/sessionnamewindow.cpp
+src/server/sessionnamewindow/sessionnamewindow.h
+src/server/util/global.cpp
+src/server/util/global.h
+src/server/util/util.cpp
+src/server/util/util.h
+src/server/main.cpp
+src/shared/network.cpp
+src/shared/network.h
+src/shared/networkmessage.cpp
+src/shared/networkmessage.h
+src/shared/settings.h
+src/shared/util.cpp
+src/shared/util.h \ No newline at end of file
diff --git a/pvs2.includes b/pvs2.includes
new file mode 100644
index 0000000..1b64a2e
--- /dev/null
+++ b/pvs2.includes
@@ -0,0 +1,16 @@
+build
+src/client/connectwindow
+src/client/net
+src/client/toolbar
+src/client/util
+src/client/util/platform
+src/client/vnc
+src/server/clicklabel
+src/server/connectionframe
+src/server/helpwindow
+src/server/mainwindow
+src/server/net
+src/server/reloadroomwindow
+src/server/sessionnamewindow
+src/server/util
+src/shared \ No newline at end of file
diff --git a/src/server/mainwindow/mainwindow.cpp b/src/server/mainwindow/mainwindow.cpp
index 7c9d210..17e821a 100644
--- a/src/server/mainwindow/mainwindow.cpp
+++ b/src/server/mainwindow/mainwindow.cpp
@@ -24,6 +24,8 @@
#include "../sessionnamewindow/sessionnamewindow.h"
#include "../connectionframe/connectionframe.h"
#include "../helpwindow/helpwindow.h"
+#include "../reloadroomwindow/reloadroomwindow.h"
+#include "ui_reloadroom.h"
// Network
#include "../net/listenserver.h"
#include "../net/client.h"
@@ -61,6 +63,8 @@ MainWindow::MainWindow(QString ipListUrl, QWidget* parent) :
_sessionNameWindow = new SessionNameWindow(this);
_helpWindow = new HelpWindow(this);
_helpWindow->setWindowTitle("Help");
+ _reloadWindow = new ReloadRoomWindow(this);
+ _reloadWindow->setWindowTitle("Reload Room");
ui->setupUi(this);
Global::setSessionName();
@@ -312,16 +316,23 @@ void MainWindow::tryToUseRoomTemplate()
for (auto i : rooms)
{
- if (!_rooms.contains(i)) {
- QList<QPair<QString, QPoint>> posIpConfig;
- _rooms.insert(i, posIpConfig);
- }
+ qDebug() << "i: " << i;
conf.beginGroup(i);
if (!conf.contains("mgrIP")) {
qDebug() << "Invalid config file!";
return;
}
- // Find the room that list the ip of this host as mgr
+
+ // First store all room configurations in _rooms.
+ int size = conf.beginReadArray("client");
+ for (int j = 0; j < size; j++) {
+ conf.setArrayIndex(j);
+ // qDebug() << "ip: " << conf.value("ip").toString() << " pos: " << conf.value("pos").toPoint();
+ _rooms[i].append(qMakePair(conf.value("ip").toString(), conf.value("pos").toPoint()));
+ }
+ conf.endArray();
+
+ // Find the managerIP of current room.
QString mgrIP = conf.value("mgrIP").toString();
foreach (const QHostAddress &address, QNetworkInterface::allAddresses())
{
@@ -343,7 +354,6 @@ void MainWindow::tryToUseRoomTemplate()
// Position is given in grid coordinates, createFrame take pixels
QString computerId = conf.value("ip").toString();
QPoint coord = conf.value("pos").toPoint();
- _rooms[i].append(qMakePair(computerId, coord));
qDebug() << computerId;
qDebug() << coord;
qDebug() << _tileWidth ;
@@ -685,9 +695,69 @@ 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()));
+ qDebug() << "in onButtonReloadRoomConfig!" << "size of room: " << _rooms.size();
+ QList<QString> keyList = _rooms.keys();
+ for (QList<QString>::iterator it = keyList.begin(); it != keyList.end() ; it++) {
+ _reloadWindow->ui->roomList->addItem(*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();
+ _reloadWindow->hide();
+}
+
+void MainWindow::onReloadRoomOk()
+{
+ int ret = QMessageBox::QMessageBox::question(this, "Warning", tr("Are you sure you want to reload the room?\n"
+ "Note that all clients will be deleted."), 0, 1, 2);
+
+ if (ret == 1) {
+ disconnect(_reloadWindow->ui->buttonBox, SIGNAL(accepted()), this, SLOT(onReloadRoomOk()));
+ disconnect(_reloadWindow->ui->buttonBox, SIGNAL(rejected()), this, SLOT(onReloadRoomCancel()));
+ // Delete all clients.
+ for (QList<ConnectionFrame*>::iterator it = _clientFrames.begin(); it != _clientFrames.end(); it++)
+ {
+ (*it)->hide();
+ (*it)->deleteLater();
+ }
+ _clientFrames.clear();
+
+ // Load new room configuration.
+ QString roomToReload = _reloadWindow->ui->roomList->currentItem()->data(0).toString();
+ // qDebug() << roomToReload;
+
+ _reloadWindow->ui->roomList->clear();
+ _reloadWindow->hide();
+
+ QList<QPair<QString, QPoint>> room = _rooms[roomToReload];
+ // qDebug() << " Room: " << room;
+ // qDebug() << "_rooms: " << _rooms;
+ for (QList<QPair<QString, QPoint>>::iterator it = room.begin(); it != room.end(); ++it)
+ {
+ QString computerId = (*it).first;
+ QPoint pos = (*it).second;
+
+ qDebug() << "ComputerID: " << computerId;
+ qDebug() << "Pos: " << pos;
+
+ // Transform to pixels for createFrame(computerId, position).
+ pos.setX(pos.x() * _tileWidth);
+ pos.setY(pos.y() * _tileHeight);
+
+ ConnectionFrame *cf = createFrame(computerId, pos);
+ cf->move(cf->getCurrentPosition());
+ onPlaceFrame(false, cf);
+ }
+ }
+}
+
/***************************************************************************//**
* Display popup which explains possible actions about the buttons.
*/
diff --git a/src/server/mainwindow/mainwindow.h b/src/server/mainwindow/mainwindow.h
index 5349903..f8d0164 100644
--- a/src/server/mainwindow/mainwindow.h
+++ b/src/server/mainwindow/mainwindow.h
@@ -11,7 +11,7 @@ class ConnectionFrame;
class ListenServer;
class DiscoveryListener;
class HelpWindow;
-class ReloadWindow;
+class ReloadRoomWindow;
namespace Ui{
class MainWindow;
@@ -36,7 +36,7 @@ private:
Ui::MainWindow *ui;
SessionNameWindow *_sessionNameWindow;
HelpWindow *_helpWindow;
- ReloadWindow *_reloadWindow;
+ ReloadRoomWindow *_reloadWindow;
QLabel *_sessionNameLabel;
int _tbIconSize;
Qt::ToolBarArea _tbArea;
@@ -110,6 +110,8 @@ protected slots:
void onButtonSetAsTutor();
void onButtonReloadRoomConfig();
+ void onReloadRoomOk();
+ void onReloadRoomCancel();
void onButtonExit();
void onButtonHelp();
diff --git a/src/server/reloadroomwindow/reloadroomwindow.cpp b/src/server/reloadroomwindow/reloadroomwindow.cpp
index 77219a7..3070148 100644
--- a/src/server/reloadroomwindow/reloadroomwindow.cpp
+++ b/src/server/reloadroomwindow/reloadroomwindow.cpp
@@ -5,25 +5,9 @@ ReloadRoomWindow::ReloadRoomWindow(QWidget *parent) :
QDialog(parent), ui(new Ui::ReloadRoom)
{
ui->setupUi(this);
- connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(onButtonOk()));
- connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(onButtonCancel()));
}
ReloadRoomWindow::~ReloadRoomWindow()
{
delete ui;
}
-
-/*
- * Slots
- */
-
-void ReloadRoomWindow::onButtonOk()
-{
-
-}
-
-void ReloadRoomWindow::onButtonCancel()
-{
- this->hide();
-}
diff --git a/src/server/reloadroomwindow/reloadroomwindow.h b/src/server/reloadroomwindow/reloadroomwindow.h
index e918736..9ce0aba 100644
--- a/src/server/reloadroomwindow/reloadroomwindow.h
+++ b/src/server/reloadroomwindow/reloadroomwindow.h
@@ -14,16 +14,12 @@ class ReloadRoomWindow : public QDialog
public:
explicit ReloadRoomWindow(QWidget *parent = 0);
~ReloadRoomWindow();
+ Ui::ReloadRoom *ui;
// void show();
private:
- Ui::ReloadRoom *ui;
-
-
-private slots:
- void onButtonCancel();
- void onButtonOk();
};
+
#endif