diff options
-rw-r--r-- | src/server/connectionframe/connectionframe.cpp | 12 | ||||
-rw-r--r-- | src/server/connectionframe/connectionframe.h | 4 | ||||
-rw-r--r-- | src/server/mainwindow/mainwindow.cpp | 127 | ||||
-rw-r--r-- | src/server/mainwindow/mainwindow.h | 3 |
4 files changed, 94 insertions, 52 deletions
diff --git a/src/server/connectionframe/connectionframe.cpp b/src/server/connectionframe/connectionframe.cpp index b09139c..caf99fc 100644 --- a/src/server/connectionframe/connectionframe.cpp +++ b/src/server/connectionframe/connectionframe.cpp @@ -50,7 +50,7 @@ static QIcon *term = NULL, *cam = NULL, *eye = NULL, *lock = NULL; * @param height */ ConnectionFrame::ConnectionFrame(QWidget *parent, int width, int height) : - QGroupBox(parent), _client(NULL), _timerId(0), _timerCounter(0), _selected(false), _isTutor(false) + QGroupBox(parent), _client(NULL), _timerId(0), _timerCounter(0), _isSelected(false), _isTutor(false) { //defines the ui-stuff @@ -295,9 +295,9 @@ void ConnectionFrame::timerEvent(QTimerEvent* event) */ void ConnectionFrame::setSelection(bool selected) { - if (_selected == selected) + if (_isSelected == selected) return; - _selected = selected; + _isSelected = selected; this->updateAppearance(); } @@ -322,7 +322,7 @@ void ConnectionFrame::updateAppearance() if (_client == NULL) { // Unconnected Frame - if (_selected) + if (_isSelected) this->setStyleSheet(style_selectedStudent); else this->setStyleSheet(style_disconnected); @@ -336,13 +336,13 @@ void ConnectionFrame::updateAppearance() // Normal client, no special stuff active - if (_selected && _isTutor){ + if (_isSelected && _isTutor){ this->setStyleSheet(style_selectedTutor); } else if (_isTutor){ this->setStyleSheet(style_tutor); } - else if (_selected){ + else if (_isSelected){ this->setStyleSheet(style_selectedStudent); } diff --git a/src/server/connectionframe/connectionframe.h b/src/server/connectionframe/connectionframe.h index 72f641d..353ebb8 100644 --- a/src/server/connectionframe/connectionframe.h +++ b/src/server/connectionframe/connectionframe.h @@ -32,7 +32,7 @@ private: Client *_client; int _timerId, _timerCounter; - bool _selected; + bool _isSelected; bool _isTutor; static const int _startDragDistance = 40; @@ -53,7 +53,7 @@ public: void setSize(int width, int height); void assignClient(Client *client); void setSelection(bool selected); - const inline bool selected() const { return _selected; } + const inline bool isSelected() const { return _isSelected; } const QString& computerId() const { return _computerId; } Client* client() const { return _client; } diff --git a/src/server/mainwindow/mainwindow.cpp b/src/server/mainwindow/mainwindow.cpp index 6ac7422..4af9fe1 100644 --- a/src/server/mainwindow/mainwindow.cpp +++ b/src/server/mainwindow/mainwindow.cpp @@ -53,9 +53,6 @@ const QString MainWindow::sStrSourceDestSame = tr("Selected projection target is MainWindow::MainWindow(QString ipListUrl, QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow), _tbIconSize(24), _tbArea(Qt::LeftToolBarArea) { - - _tutorFrame = NULL; - _selectedFrame = NULL; _mode = Mode::Multicast; _streamingSource = 0; @@ -291,6 +288,12 @@ bool MainWindow::isManagerMachine(Client* client) return false; } +/***************************************************************************//** + * Returns connected client which belongs to given id. + * Iterating over ConnectionFrames and comparing id to given id. + * @param id + * @return Client with given id, if not NULL. + */ Client* MainWindow::getClientFromId(int id) { for (QList<ConnectionFrame*>::iterator it(_clientFrames.begin()); it != _clientFrames.end(); ++it) @@ -304,6 +307,38 @@ Client* MainWindow::getClientFromId(int id) return NULL; } +/***************************************************************************//** + * Return the Frame, which is currently beeing Tutor. + * Iterating over all ConnectionFrames, and looking for flag _isTutor. + * @return Frame with flag _isTutor = true, + * else NULL if no Tutor is available. + */ +ConnectionFrame* MainWindow::getTutorFrame() +{ + for (QList<ConnectionFrame*>::iterator it(_clientFrames.begin()); it != _clientFrames.end(); ++it) + { + if (((*it) != NULL) && ((*it)->isTutor())) + return (*it); + } + return NULL; +} + +/***************************************************************************//** + * Return the Frame, which is currently selected by user. + * Iterating over all ConnectionFrame and looking for flag _isSelected. + * @return Frame with flag _isSelected = true, + * else NULL if no frame is selected. + */ +ConnectionFrame* MainWindow::getSelectedFrame() +{ + for (QList<ConnectionFrame*>::iterator it(_clientFrames.begin()); it != _clientFrames.end(); ++it) + { + if (((*it) != NULL) && ((*it)->isSelected())) + return (*it); + } + return NULL; +} + /* * Overridden methods */ @@ -370,9 +405,9 @@ void MainWindow::mouseReleaseEvent(QMouseEvent* e) const QSize frame(ui->frmRoom->size()); if (frame.width() > pos.x() && frame.height() > pos.y()) { - if (_selectedFrame != NULL) { - _selectedFrame->setSelection(false); - _selectedFrame = NULL; + if (getSelectedFrame() != NULL) + { + getSelectedFrame()->setSelection(false); } } } @@ -451,15 +486,18 @@ void MainWindow::onPlaceFrame(ConnectionFrame* frame) void MainWindow::onFrameClicked(ConnectionFrame* frame) { // If same frame is clicked again,, do nothing - if (_selectedFrame == frame) + if (getSelectedFrame() == frame) return; // If another frame has been selected, unselect it // Set the ui selected and set a new reference - if (_selectedFrame != NULL) - _selectedFrame->setSelection(false); - _selectedFrame = frame; - _selectedFrame->setSelection(true); + if (getSelectedFrame() != NULL) + { + getSelectedFrame()->setSelection(false); + } + frame->setSelection(true); + qDebug() << "ID of frame: " << frame->computerId(); + qDebug() << "ID of selectedFrame: " << getSelectedFrame()->computerId(); } /***************************************************************************//** @@ -565,12 +603,12 @@ void MainWindow::onButtonTutorToAll() { ui->action_Lock->setChecked(false); - if (_tutorFrame == NULL) + if (getTutorFrame() == NULL) QMessageBox::critical(this, tr("Projection"), sStrTutorNdef); - else if (_tutorFrame->client() == NULL) + else if (getTutorFrame()->client() == NULL) QMessageBox::critical(this, tr("Projection"), sStrTutorOffline); else - changeProjection(_tutorFrame->client(), Mode::Broadcast); + changeProjection(getTutorFrame()->client(), Mode::Broadcast); } /***************************************************************************//** @@ -582,12 +620,12 @@ void MainWindow::onButtonStudentToAll() { ui->action_Lock->setChecked(false); - if (_selectedFrame == NULL) + if (getSelectedFrame() == NULL) QMessageBox::critical(this, tr("Projection"), sStrSourceNdef); - if (_selectedFrame->client() == NULL) + if (getSelectedFrame()->client() == NULL) QMessageBox::critical(this, tr("Projection"), sStrSourceOffline); else - changeProjection(_selectedFrame->client(), Mode::Broadcast); + changeProjection(getSelectedFrame()->client(), Mode::Broadcast); } /***************************************************************************//** @@ -598,18 +636,18 @@ void MainWindow::onButtonTutorToStudent() { ui->action_Lock->setChecked(false); - if (_selectedFrame == NULL) + if (getSelectedFrame() == NULL) QMessageBox::critical(this, tr("Projection"), sStrDestNdef); - else if (_tutorFrame == NULL) + else if (getTutorFrame() == NULL) QMessageBox::critical(this, tr("Projection"), sStrTutorNdef); - else if (_selectedFrame == _tutorFrame) + else if (getSelectedFrame() == getTutorFrame()) QMessageBox::critical(this, tr("Projection"), sStrSourceDestSame); - else if (_selectedFrame->client() == NULL) + else if (getSelectedFrame()->client() == NULL) QMessageBox::critical(this, tr("Projection"), sStrDestOffline); - else if (_tutorFrame->client() == NULL) + else if (getTutorFrame()->client() == NULL) QMessageBox::critical(this, tr("Projection"), sStrTutorOffline); else - changeProjection(_tutorFrame->client(), Mode::Multicast, _selectedFrame->client()); + changeProjection(getTutorFrame()->client(), Mode::Multicast, getSelectedFrame()->client()); } /***************************************************************************//** @@ -620,18 +658,18 @@ void MainWindow::onButtonStudentToTutor() { ui->action_Lock->setChecked(false); - if (_selectedFrame == NULL) + if (getSelectedFrame() == NULL) QMessageBox::critical(this, tr("Projection"), sStrSourceNdef); - else if (_tutorFrame == NULL) + else if (getTutorFrame() == NULL) QMessageBox::critical(this, tr("Projection"), sStrTutorNdef); - else if (_tutorFrame == _selectedFrame) + else if (getTutorFrame() == getSelectedFrame()) QMessageBox::critical(this, tr("Projection"), sStrSourceDestSame); - else if (_selectedFrame->client() == NULL) + else if (getSelectedFrame()->client() == NULL) QMessageBox::critical(this, tr("Projection"), sStrSourceOffline); - else if (_tutorFrame->client() == NULL) + else if (getTutorFrame()->client() == NULL) QMessageBox::critical(this, tr("Projection"), sStrTutorOffline); else - changeProjection(_selectedFrame->client(), Mode::Multicast, _tutorFrame->client()); + changeProjection(getSelectedFrame()->client(), Mode::Multicast, getTutorFrame()->client()); } @@ -642,18 +680,18 @@ void MainWindow::onButtonStudentToTutorExclusive() { ui->action_Lock->setChecked(false); - if (_selectedFrame == NULL) + if (getSelectedFrame() == NULL) QMessageBox::critical(this, tr("Projection"), sStrSourceNdef); - else if (_tutorFrame == NULL) + else if (getTutorFrame() == NULL) QMessageBox::critical(this, tr("Projection"), sStrTutorNdef); - else if (_tutorFrame == _selectedFrame) + else if (getTutorFrame() == getSelectedFrame()) QMessageBox::critical(this, tr("Projection"), sStrSourceDestSame); - else if (_selectedFrame->client() == NULL) + else if (getSelectedFrame()->client() == NULL) QMessageBox::critical(this, tr("Projection"), sStrSourceOffline); - else if (_tutorFrame->client() == NULL) + else if (getTutorFrame()->client() == NULL) QMessageBox::critical(this, tr("Projection"), sStrTutorOffline); else - changeProjection(_selectedFrame->client(), Mode::LockedMulticast, _tutorFrame->client()); + changeProjection(getSelectedFrame()->client(), Mode::LockedMulticast, getTutorFrame()->client()); } @@ -706,30 +744,33 @@ void MainWindow::onButtonSetAsTutor() ui->action_Lock->setChecked(false); // If no frame is selected, warning. - if (_selectedFrame == NULL) + if (getSelectedFrame() == NULL) { QMessageBox::critical(this, tr("Selection"), tr("No client is selected.")); return; } // If frame of inactive client has been selected unselect it - if (_selectedFrame->client() == NULL) + if (getSelectedFrame()->client() == NULL) { QMessageBox::critical(this, tr("Selection"), tr("The selected client is not connected.")); return; } else // If selected client is locked, first unlock - _selectedFrame->client()->lockScreen(false); + { + getSelectedFrame()->client()->lockScreen(false); + } // If same frame is already tutor, do nothing - if (_selectedFrame == _tutorFrame) + if (getSelectedFrame() == getTutorFrame()) return; // Else unset the old and set the new tutor - if (_tutorFrame != NULL) - _tutorFrame->setTutor(false); - _tutorFrame = _selectedFrame; - _tutorFrame->setTutor(true); + if (getTutorFrame() != NULL) + { + getTutorFrame()->setTutor(false); + } + getSelectedFrame()->setTutor(true); } /***************************************************************************//** diff --git a/src/server/mainwindow/mainwindow.h b/src/server/mainwindow/mainwindow.h index 64accd9..dbef1b1 100644 --- a/src/server/mainwindow/mainwindow.h +++ b/src/server/mainwindow/mainwindow.h @@ -39,7 +39,6 @@ private: int _tbIconSize; Qt::ToolBarArea _tbArea; int _tileWidth, _tileHeight; - ConnectionFrame *_tutorFrame, *_selectedFrame; static const int _tilesX = 9; static const int _tilesY = 7; @@ -86,6 +85,8 @@ private: void mouseReleaseEvent(QMouseEvent* e); Client* getClientFromId(int id); + ConnectionFrame* getTutorFrame(); + ConnectionFrame* getSelectedFrame(); protected slots: void onTutorListDownloaded(QByteArray& tutorList); |