#ifndef _MAINWINDOW_H_ #define _MAINWINDOW_H_ #include #include #include "../net/client.h" #include "../net/filedownloader.h" class SessionNameWindow; class ConnectionFrame; class ListenServer; class DiscoveryListener; 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; QLabel *_sessionNameLabel; int _tbIconSize; Qt::ToolBarArea _tbArea; int _tileWidth, _tileHeight; ConnectionFrame *_tutorFrame, *_selectedFrame; static const int _tilesX = 9; static const int _tilesY = 7; // Button block stuff QTimer *_buttonLockTimer; QList _lockingButtons; static const qint64 _buttonBlockTime = 600; // Internal stuff QList _clientFrames; int _timerId, _timerTimeout; ListenServer *_listenServer; DiscoveryListener *_discoveryListener; FileDownloader _fileDownloader; QStringList _tutorList; 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; void placeFrameInFreeSlot(ConnectionFrame* frame); ConnectionFrame* createFrame(); bool loadPosition(QSettings& settings, const QString& id, int& x, int& y); void savePosition(ConnectionFrame *cf); void prepareForProjection(Client * const from, Client * const to); bool isValidClient(Client* client); void broadcast(Client *from); void unicast(Client *from, Client *to); void unicastExlusive(Client *from, Client *to); void closeEvent(QCloseEvent *e); void changeEvent(QEvent *e); void resizeEvent(QResizeEvent *e); void mouseReleaseEvent(QMouseEvent* e); void timerEvent(QTimerEvent* event); protected slots: void onTutorListDownloaded(QByteArray& tutorList); void onSessionNameClick(); void onSessionNameUpdate(); void onButtonStudentToAll(); void onButtonStudentToTutor(); void onButtonStudentToTutorExclusive(); void onButtonTutorToAll(); void onButtonTutorToStudent(); void onButtonStopProjection(); void onButtonLock(bool checked); void onButtonExit(); void onButtonSetAsTutor(); void DisableButtons(); void EnableButtons(); // connection frame void onPlaceFrame(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, int lastProjectionSource); }; #endif