diff options
-rw-r--r-- | gui/server_normal/reloadroom.ui | 35 | ||||
-rw-r--r-- | pvs2.config | 1 | ||||
-rw-r--r-- | pvs2.creator | 1 | ||||
-rw-r--r-- | pvs2.files | 90 | ||||
-rw-r--r-- | pvs2.includes | 16 | ||||
-rw-r--r-- | src/server/mainwindow/mainwindow.cpp | 82 | ||||
-rw-r--r-- | src/server/mainwindow/mainwindow.h | 6 | ||||
-rw-r--r-- | src/server/reloadroomwindow/reloadroomwindow.cpp | 16 | ||||
-rw-r--r-- | src/server/reloadroomwindow/reloadroomwindow.h | 8 |
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 |