summaryrefslogblamecommitdiffstats
path: root/src/server/connectionframe/connectionframe.h
blob: 367810c259b3b83ec1d7c6dc6981738d1f7c19e3 (plain) (tree)
1
2
3
4


                           
                          




























                                        

                                                 
                                
                                















                                                                       
                              
















                                                       
                                    

                                                                  
                                                                    


      
#ifndef _CONNECTIONFRAME_H_
#define _CONNECTIONFRAME_H_
#include <QtGui>
#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<QLabel*> _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