#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 private: Ui::MainWindow *ui; SessionNameWindow *_sessionNameWindow; QLabel *_sessionNameLabel; /** * List of current clients in session. */ QList _clientFrames; int _tbIconSize; Qt::ToolBarArea _tbArea; int _tileWidth, _tileHeight; int _timerId, _timerTimeout; ListenServer *_listenServer; DiscoveryListener *_discoveryListener; // Button block stuff QTimer * _buttonLockTimer; QList _lockingButtons; static const qint64 _buttonBlockTime = 600; /** * Downloader for IP - List of possible tutors. */ FileDownloader _fileDownloader; /** * Stored List of possible tutor IPs. */ QStringList _tutorList; // Magic numbers static const int _tilesX = 9; static const int _tilesY = 7; 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); public: MainWindow(QString ipListUrl, QWidget *parent = 0); ~MainWindow(); protected: void closeEvent(QCloseEvent *e); void changeEvent(QEvent *e); void resizeEvent(QResizeEvent *e); void mouseReleaseEvent(QMouseEvent* e); void timerEvent(QTimerEvent* event); protected slots: // This void onTutorListDownloaded(QByteArray& tutorList); void onSessionNameClick(); void onSessionNameUpdate(); void onButtonSettings(); void onButtonChat(); void onButtonStudentToAll(); void onButtonStudentToTutor(); void onButtonTutorToAll(); void onButtonTutorToStudent(); void onButtonStopProjection(); void onButtonLock(bool checked); void onButtonExit(); void onButtonSetAsTutor(); // 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); //Buttons void DisableButtons(); void EnableButtons(); }; #endif