#ifndef KVIEWER_H
#define KVIEWER_H
#include <X11/Xlib.h> // XBell
#include <X11/keysym.h>
#undef TrueColor
#include <qpopmenu.h>
#include <qpushbt.h>
#include <qlined.h>
#include <qlabel.h>
#include <qdialog.h>
#include <qscrbar.h>
#include <qimage.h>
#include <qpixmap.h>
#include <qbitmap.h>
#include <qcursor.h>
#include <qevent.h>
#include <qkeycode.h>
#include <kapp.h>
#include <ktopwidget.h>
#include <ktoolbar.h>
#include <kstatusbar.h>
#include <kmenubar.h>
#include <kmsgbox.h>
#include <iostream.h>
#include "QwViewport.h"
#include "krfbproto.h"
class kRfbProto;
class KVNCAuthWdg;
struct rfbServerInitMsg;
#define LeftButtonBits 0x01
#define MidButtonBits 0x02
#define RightButtonBits 0x04
class KVNCCanvas : public QWidget {
Q_OBJECT
public:
KVNCCanvas(QWidget *parent = 0, const char *name = 0);
~KVNCCanvas();
public slots:
void drawImage(CARD8*,int,int,int,int);
bool openConnection();
void closeConnection();
void refreshDisplay();
void setHost(const char *h) { _host = h;}
void setDisplay(int d) { _dis = d;}
const char * host() { return _host;}
int display() { return _dis;}
int port() { return (_dis + 5900);}
void setPassword(const char *p) { _password = p;}
const char * password() {return _password;}
rfbServerInitMsg * getServerInformation();
const char * desktop() { return rfb->desktop();}
private slots:
void initCanvas();
void slotScrollVert(int);
void slotScrollHorz(int);
void createCursor();
bool initConnection();
int authenticate();
void setConnected(bool c) { _connected = c;}
bool connected() { return _connected;}
void bell();
void displayData();
void fatal();
KeySym determineKey(QKeyEvent *);
private:
// I'm not sure what this is for (rich)
// KVNCCanvas *internalView;
QScrollBar *horzBar;
QScrollBar *vertBar;
int frameHeight,frameWidth, depth;
kRfbProto *rfb;
CARD8 mask; // global buttonMask
bool leftButtonDown;
bool midButtonDown;
bool rightButtonDown;
QLabel *l;
bool _connected;
const char * _host;
int _dis;
QString _password;
// We now use screenImage
// char *screenBuffer;
// long screenBufferLen;
QImage screenImage;
QPixmap screenPixmap;
signals:
void updateStatusBar(const char* ,int);
void sigFatal();
void sizeChanged();
protected:
virtual void keyPressEvent(QKeyEvent *);
virtual void keyReleaseEvent(QKeyEvent*);
virtual void mousePressEvent(QMouseEvent*);
virtual void mouseReleaseEvent(QMouseEvent*);
virtual void mouseMoveEvent(QMouseEvent*);
// virtual void resizeEvent(QResizeEvent *);
virtual void paintEvent(QPaintEvent *);
};
class KVNCViewer : public KTopLevelWidget {
Q_OBJECT
public:
KVNCViewer(QWidget *parent = 0 , const char *name = 0);
~KVNCViewer();
public slots:
bool connected() { return _connected;}
bool openConnection();
void setConnected(bool c);
void updateStatusBar(const char *, int);
void fatal();
private slots:
void setupMenuBar();
void setupToolBar();
void setupStatusBar();
void closeConnection();
void close();
void serverInformation();
private:
QwViewport *viewport;
KVNCCanvas *canvas;
KMenuBar *menuBar;
KToolBar *toolBar;
KStatusBar *statusBar;
bool _connected;
protected:
};
class KVNCConnectDlg : public QDialog {
Q_OBJECT;
public:
KVNCConnectDlg(QWidget *parent = 0, const char *name = 0, KVNCCanvas *wid = 0 );
private:
QLineEdit *hostNameLdt;
QLineEdit *displayNumberLdt;
QPushButton *ok;
QPushButton *cancel;
KVNCCanvas *viewer;
private slots:
void slotOkPressed();
void slotCancelPressed();
};
#endif
Documentation generated by rich@pegasus on Sun Mar 22 20:56:11 MET 1998