/* # Copyright (c) 2009, 2010 - OpenSLX Project, Computer Center University of # Freiburg # # This program is free software distributed under the GPL version 2. # See http://openslx.org/COPYING # # If you have any feedback please consult http://openslx.org/feedback and # send your suggestions, praise, or complaints to feedback@openslx.org # # General information about OpenSLX can be found at http://openslx.org/ */ #ifndef CLIENTVNCVIEWER_H_ #define CLIENTVNCVIEWER_H_ #include #include #include class VncThread; class QPainter; class VncWindow : public QWidget { Q_OBJECT public: VncWindow(QWidget *parent = 0); virtual ~VncWindow(); protected slots: void onUpdateImage(const int x, const int y, const int w, const int h); void onProjectionStarted(); void onProjectionStopped(); void timer_moveToTop(); void deleteVncThread(); void open(const QString& host, int port, const QString& passwd, bool ro, bool fullscreen, const QString& caption, const int clientId, const QByteArray& rawThumb); // bool close(); signals: void running(const bool isRunning, const int clientId); protected: void paintEvent(QPaintEvent *event); void resizeEvent(QResizeEvent* event); void closeEvent(QCloseEvent *e); void timerEvent(QTimerEvent *event); void keyReleaseEvent(QKeyEvent *event); private: VncThread *_vncWorker; bool _viewOnly; bool _multiScreen; int _clientId; int _redrawTimer; int _tcpTimeoutTimer; QPixmap _remoteThumb; QSharedPointer _image; void draw(const int x, const int y, const int w, const int h); void terminateVncThread(); }; #endif /* CLIENTVNCVIEWER_H_ */