summaryrefslogtreecommitdiffstats
path: root/krdc/rdp/krdpview.h
diff options
context:
space:
mode:
Diffstat (limited to 'krdc/rdp/krdpview.h')
-rw-r--r--krdc/rdp/krdpview.h113
1 files changed, 113 insertions, 0 deletions
diff --git a/krdc/rdp/krdpview.h b/krdc/rdp/krdpview.h
new file mode 100644
index 00000000..a54c2d96
--- /dev/null
+++ b/krdc/rdp/krdpview.h
@@ -0,0 +1,113 @@
+/*
+ krdpview.h, declaration of the KRdpView class
+ Copyright (C) 2002 Arend van Beelen jr.
+
+ This program is free software; you can redistribute it and/or modify it under the terms of the
+ GNU General Public License as published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
+ the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with this program; if
+ not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ MA 02111-1307 USA
+
+ For any questions, comments or whatever, you may mail me at: arend@auton.nl
+*/
+
+#ifndef KRDPVIEW_H
+#define KRDPVIEW_H
+
+#include <qxembed.h>
+
+#include "hostpreferences.h"
+#include "kremoteview.h"
+
+#define TCP_PORT_RDP 3389
+#define RDP_LOGON_NORMAL 0x33
+
+class KProcess;
+class KRdpView;
+
+class RdpContainer : public QXEmbed
+{
+ Q_OBJECT
+
+ friend class KRdpView;
+
+ public:
+ RdpContainer(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
+ ~RdpContainer();
+
+ signals:
+ void newEmbeddedWindow(WId window);
+
+ protected:
+ virtual void windowChanged(WId window);
+ virtual bool x11Event(XEvent *e);
+
+ private:
+ bool m_viewOnly; // if set: ignore all input
+};
+
+class KRdpView : public KRemoteView
+{
+ Q_OBJECT
+
+ public:
+ // constructor and destructor
+ KRdpView(QWidget *parent = 0, const char *name = 0,
+ const QString &host = QString::null, int port = TCP_PORT_RDP,
+ const QString &user = QString::null, const QString &password = QString::null,
+ int flags = RDP_LOGON_NORMAL, const QString &domain = QString::null,
+ const QString &shell = QString::null, const QString &directory = QString::null);
+ virtual ~KRdpView();
+
+ // functions regarding the window
+ virtual QSize framebufferSize(); // returns the size of the remote view
+ QSize sizeHint(); // returns the suggested size
+ virtual bool viewOnly();
+
+ // functions regarding the connection
+ virtual void startQuitting(); // start closing the connection
+ virtual bool isQuitting(); // are we currently closing the connection?
+ virtual QString host(); // return the host we're connected to
+ virtual int port(); // return the port number we're connected on
+ virtual bool start(); // open a connection
+
+ static bool editPreferences( HostPrefPtr );
+
+ public slots:
+ virtual void switchFullscreen(bool on);
+ virtual void pressKey(XEvent *k); // send a generated key to the server
+ virtual void setViewOnly(bool s);
+
+ private:
+ // properties used for setting up the connection
+ QString m_name; // name of the connection
+ QString m_host; // the host to connect to
+ int m_port; // the port on the host
+ QString m_user; // the user to use to log in
+ QString m_password; // the password to use
+ int m_flags; // flags which determine how the connection is set up
+ QString m_domain; // the domain where the host is on
+ QString m_shell; // the shell to use
+ QString m_directory; // the working directory on the server
+
+ // other properties
+ bool m_quitFlag; // if set: die
+ QString m_clientVersion; // version number returned by rdesktop
+ RdpContainer *m_container; // container for the rdesktop window
+ KProcess *m_process; // rdesktop process
+
+ private slots:
+ void connectionOpened(WId window); // called if rdesktop started
+ void connectionClosed(); // called if rdesktop quits
+ void processDied(KProcess *); // called if rdesktop dies
+ void receivedStderr(KProcess *proc, char *buffer, int buflen);
+ // catches rdesktop debug output
+};
+
+#endif