/* # 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*) { this->update(); } void closeEvent(QCloseEvent *e); void timerEvent(QTimerEvent *event); void keyReleaseEvent(QKeyEvent *event); private: int _srcStepX, _srcStepY, _dstStepX, _dstStepY; VncThread *_vncWorker; bool _viewOnly; bool _multiScreen; int _clientId; int _redrawTimer; int _tcpTimeoutTimer; QPixmap _remoteThumb; QSize _remoteSize; QSize _desiredSize; void draw(const int x, const int y, const int w, const int h); void terminateVncThread(); bool calcScaling(const QImage *remote); }; #endif /* CLIENTVNCVIEWER_H_ */