summaryrefslogblamecommitdiffstats
path: root/src/server/connectionframe/connectionframe.h
blob: 72f641d341b3b64181a4d855272c5944c80f60be (plain) (tree)
1
2
3
4
5
6
7
8
9


                           
                          
 



                                                                               













                                        
                                             












                                    

                                                 
                                

                                           
                             



                                                             













                                                                       
                              
















                                                       
                                    
                                                                  
                                


      
#ifndef _CONNECTIONFRAME_H_
#define _CONNECTIONFRAME_H_
#include <QtGui>
#include "../net/client.h"

/**
 * Class for representing the clients of current session, with a specific frame
 * displaying username and hostname for each one.
 */
class ConnectionFrame : public QGroupBox
{

Q_OBJECT

private:

	QString _computerId;

	QBoxLayout *_mainLayout;
	QBoxLayout *_iconLayout;
	QLabel *_lblUserName;
	QLabel *_lblHostName;

	QLabel *_icoCam, *_icoEye, *_icoLock;
	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();
	QLabel* addIcon(const QIcon* icon);

	// Static stylesheets
	static const QString studentLblStyle, studentBgStyle;
	static const QString tutorLblStyle, tutorBgStyle;
	static const QString selectedBgStyle;

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 updateAppearance();
};

#endif