1 /****************************************************************************
3 ** Copyright (C) 2007 Urs Wolfer <uwolfer @ kde.org>
5 ** This file is part of KDE.
7 ** This program is free software; you can redistribute it and/or modify
8 ** it under the terms of the GNU General Public License as published by
9 ** the Free Software Foundation; either version 2 of the License, or
10 ** (at your option) any later version.
12 ** This program is distributed in the hope that it will be useful,
13 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 ** GNU General Public License for more details.
17 ** You should have received a copy of the GNU General Public License
18 ** along with this program; see the file COPYING. If not, write to
19 ** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 ** Boston, MA 02110-1301, USA.
22 ****************************************************************************/
24 #ifndef VNCCLIENTTHREAD_H
25 #define VNCCLIENTTHREAD_H
27 #include "remoteview.h"
35 #include <rfb/rfbclient.h>
41 virtual ~ClientEvent();
43 virtual void fire(rfbClient
*) = 0;
46 class KeyClientEvent
: public ClientEvent
49 KeyClientEvent(int key
, int pressed
)
50 : m_key(key
), m_pressed(pressed
) {}
52 void fire(rfbClient
*);
59 class PointerClientEvent
: public ClientEvent
62 PointerClientEvent(int x
, int y
, int buttonMask
)
63 : m_x(x
), m_y(y
), m_buttonMask(buttonMask
) {}
65 void fire(rfbClient
*);
73 class ClientCutEvent
: public ClientEvent
76 ClientCutEvent(char *text
)
79 void fire(rfbClient
*);
85 class VncClientThread
: public QThread
90 explicit VncClientThread();
92 const QImage
image(int x
= 0, int y
= 0, int w
= 0, int h
= 0);
93 void setImage(const QImage
&img
);
94 void emitUpdated(int x
, int y
, int w
, int h
);
95 void emitGotCut(const QString
&text
);
97 void setHost(const QString
&host
);
98 void setPort(int port
);
99 void setQuality(RemoteView::Quality quality
);
100 void setPassword(const QString
&password
) {
101 m_password
= password
;
103 const QString
password() const {
107 RemoteView::Quality
quality() const;
110 void imageUpdated(int x
, int y
, int w
, int h
);
111 void gotCut(const QString
&text
);
112 void passwordRequest();
113 void outputErrorMessage(const QString
&message
);
116 void mouseEvent(int x
, int y
, int buttonMask
);
117 void keyEvent(int key
, bool pressed
);
118 void clientCut(const QString
&text
);
124 static char* passwdHandler(rfbClient
*cl
);
125 static void outputHandler(const char *format
, ...);
133 RemoteView::Quality m_quality
;
134 QQueue
<ClientEvent
* > m_eventQueue
;
136 volatile bool m_stopped
;
137 volatile bool m_passwordError
;
140 void checkOutputErrorMessage();