#ifndef _CONNECTIONFRAME_H_ #define _CONNECTIONFRAME_H_ #include #include "../net/client.h" class ConnectionFrame : public QGroupBox { Q_OBJECT private: QString _computerId; QBoxLayout *_mainLayout; QBoxLayout *_iconLayout; QLabel *_lblUserName; QLabel *_lblHostName; QLabel *_icoCam, *_icoEye; QList _icons; QPixmap _remoteScreen; QPoint _clickPoint; QPoint _previousPosition; Client *_client; int _timerId, _timerCounter; bool _selected; bool _isTutor; static const int _startDragDistance = 40; void showDefaultThumb(); void updateAppearance(); QLabel* addIcon(const QIcon* icon); public: ConnectionFrame(QWidget* parent, int width, int height); virtual ~ConnectionFrame(); const QPixmap& getFramePixmap() const { return _remoteScreen; } void setSize(int width, int height); void assignClient(Client *client); void setSelection(bool selected); const inline bool selected() const { return _selected; } const QString& computerId() const { return _computerId; } Client* client() const { return _client; } inline const bool isTutor() const { return _isTutor; } void setTutor(bool b); protected: void mouseDoubleClickEvent(QMouseEvent* event); void mouseReleaseEvent(QMouseEvent* e); void enterEvent(QEvent* event); void leaveEvent(QEvent* event); void mousePressEvent(QMouseEvent* event); void mouseMoveEvent(QMouseEvent* event); void paintEvent(QPaintEvent *event); void timerEvent(QTimerEvent* event); signals: void frameMoved(ConnectionFrame* frame); void doubleClicked(ConnectionFrame* frame); void clicked(ConnectionFrame* frame); private slots: void onClientDisconnected(); void onThumbUpdated(Client* client, const QPixmap& thumb); void onVncServerStateChange(Client* client); void onVncClientStateChange(Client* client, int lastSource); }; #endif