blob: 4e9974796918b30bafb6ad10ebb62a6206cb2676 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
#ifndef _MAINWINDOW_H_
#define _MAINWINDOW_H_
#include <QtWidgets>
#include <QMainWindow>
#include "../net/client.h"
class SessionNameWindow;
class ConnectionFrame;
class ListenServer;
class DiscoveryListener;
class HelpWindow;
class ReloadRoomWindow;
namespace Ui
{
class MainWindow;
}
/**
* Initializing MainWindow.
* Handle ButtonEvents and initialize ListenServer.
*/
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
QRect calcFrameGeometry(ConnectionFrame* frame) const;
private:
// Ui stuff
Ui::MainWindow *ui;
SessionNameWindow *_sessionNameWindow;
HelpWindow *_helpWindow;
ReloadRoomWindow *_reloadWindow;
QLabel *_sessionNameLabel;
int _tbIconSize;
Qt::ToolBarArea _tbArea;
int _tilesX;
int _tilesY;
QImage* _backgroundImage = NULL;
QLabel* _examModeLabel = NULL;
/* virtual columns to preserve the aspect ratio of the loaded room */
int _virtCols;
int _virtRows;
// Button block stuff
QTimer *_buttonLockTimer;
QList<QAction*> _lockingButtons;
static const qint64 _buttonBlockTime = 2000;
/* Context-sensitive Buttons */
QList<QAction*> _contextButtons;
// Management stuff
enum class Mode
{
Broadcast,
Multicast,
Unicast,
LockedUnicast,
None
} _mode;
int _streamingSource;
QList<ConnectionFrame*> _clientFrames;
ListenServer *_listenServer;
DiscoveryListener *_discoveryListener;
int _lastClientCount;
QPoint closestFreeSlot(QPoint preferredPixels, ConnectionFrame* toIgnore);
void placeFrameInFreeSlot(ConnectionFrame* frame, QPoint preferred = QPoint(-1, -1));
ConnectionFrame* createFrame(const QString &computerId = QString(), const QPoint *gridPosition = NULL, bool fromRoomplan = false);
void savePosition(ConnectionFrame *cf);
void startVncServerIfNecessary(int from);
void tellClientCurrentSituation(Client* client);
void reset(bool lock = false);
Client* getClientFromId(int id);
ConnectionFrame* getTutorFrame();
ConnectionFrame* getSelectedFrame();
void closeEvent(QCloseEvent *e);
void changeEvent(QEvent *e);
void resizeEvent(QResizeEvent *e);
void mouseReleaseEvent(QMouseEvent* e);
int getTileWidthPx() const;
int getTileHeightPx() const;
void lockContextButtons();
void unlockContextButtons();
void reloadCurrentRoom();
protected slots:
void disableButtons();
void enableButtons();
void clientCountChanged();
void onSessionNameClick();
void onSessionNameUpdate();
void onDeleteClient();
void onButtonLock(bool checked);
void onButtonLockSingle();
void onButtonStudentToTutor();
void onButtonStudentToTutorExclusive();
void onButtonTutorToAll();
void onButtonTutorToStudent();
void onButtonStopProjection();
void onButtonSetAsTutor();
void onButtonReloadRoomConfig();
void onReloadRoomOk();
void onReloadRoomCancel();
void onButtonExit();
void onButtonHelp();
// 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);
};
#endif
|