#ifndef _MAINWINDOW_H_ #define _MAINWINDOW_H_ #include #include #include "../net/client.h" #include "../net/filedownloader.h" class SessionNameWindow; class ConnectionFrame; class ListenServer; class DiscoveryListener; class HelpWindow; class ReloadWindow; namespace Ui{ class MainWindow; } /** * Initializing MainWindow. * Handle ButtonEvents and initialize ListenServer. */ class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QString ipListUrl, QWidget *parent = 0); ~MainWindow(); private: // Ui stuff Ui::MainWindow *ui; SessionNameWindow *_sessionNameWindow; HelpWindow *_helpWindow; ReloadWindow *_reloadWindow; QLabel *_sessionNameLabel; int _tbIconSize; Qt::ToolBarArea _tbArea; int _tileWidth, _tileHeight; static const int _tilesX = 9; static const int _tilesY = 7; // Button block stuff QTimer *_buttonLockTimer; QList _lockingButtons; static const qint64 _buttonBlockTime = 2000; // Management stuff enum class Mode { Broadcast, Multicast, Unicast, LockedUnicast, None } _mode; int _streamingSource; int _countSessionNameUpdate; QList _clientFrames; ListenServer *_listenServer; DiscoveryListener *_discoveryListener; FileDownloader _fileDownloader; QStringList _tutorList; QMap > > _rooms; static const QString sStrTutorNdef; static const QString sStrTutorOffline; static const QString sStrSourceNdef; static const QString sStrSourceOffline; static const QString sStrDestNdef; static const QString sStrDestOffline; static const QString sStrSourceDestSame; static const QString sStrClientOnline; static const QString sStrNoDestAv; void placeFrameInFreeSlot(ConnectionFrame* frame); ConnectionFrame* createFrame(); ConnectionFrame* createFrame(QString computerId, QPoint position); bool loadPosition(QSettings& settings, const QString& id, int& x, int& y); void savePosition(ConnectionFrame *cf); void startVncServerIfNecessary(int from); void tellClientCurrentSituation(Client* client); void tryToUseRoomTemplate(); void reset(); Client* getClientFromId(int id); ConnectionFrame* getTutorFrame(); ConnectionFrame* getSelectedFrame(); void closeEvent(QCloseEvent *e); void changeEvent(QEvent *e); void resizeEvent(QResizeEvent *e); void mouseReleaseEvent(QMouseEvent* e); protected slots: void onTutorListDownloaded(QByteArray& tutorList); void onSessionNameClick(); void onSessionNameUpdate(); void onButtonLock(bool checked); void onButtonStudentToTutor(); void onButtonStudentToTutorExclusive(); void onButtonTutorToAll(); void onButtonTutorToStudent(); void onButtonStopProjection(); void onButtonSetAsTutor(); void onButtonReloadRoomConfig(); void onButtonExit(); void onButtonHelp(); void DisableButtons(); void EnableButtons(); // connection frame void onPlaceFrame(bool activateTrash, ConnectionFrame* frame); void onFrameClicked(ConnectionFrame* frame); // Net void onClientConnected(Client* client); void onClientAuthenticating(Client* client, ClientLogin* request); void onClientAuthenticated(Client* client); void onVncServerStateChange(Client* client); void onVncClientStateChange(Client* client); }; #endif