/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA For any questions, comments or whatever, you may mail me at: arend@auton.nl */ #ifndef KRDPVIEW_H #define KRDPVIEW_H #include #include "hostpreferences.h" #include "kremoteview.h" #define TCP_PORT_RDP 3389 #define RDP_LOGON_NORMAL 0x33 class TDEProcess; class KRdpView; class RdpContainer : public QXEmbed { Q_OBJECT friend class KRdpView; public: RdpContainer(TQWidget *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(TQWidget *parent = 0, const char *name = 0, const TQString &host = TQString(), int port = TCP_PORT_RDP, const TQString &user = TQString(), const TQString &password = TQString(), int flags = RDP_LOGON_NORMAL, const TQString &domain = TQString(), const TQString &shell = TQString(), const TQString &directory = TQString()); virtual ~KRdpView(); // functions regarding the window virtual TQSize framebufferSize(); // returns the size of the remote view TQSize sizeHint(); // returns the suggested size virtual bool viewOnly(); virtual bool startFullscreen(); // functions regarding the connection virtual void startQuitting(); // start closing the connection virtual bool isQuitting(); // are we currently closing the connection? virtual TQString 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 TQString m_name; // name of the connection TQString m_host; // the host to connect to int m_port; // the port on the host TQString m_user; // the user to use to log in TQString m_password; // the password to use int m_flags; // flags which determine how the connection is set up TQString m_domain; // the domain where the host is on TQString m_shell; // the shell to use TQString m_directory; // the working directory on the server // other properties bool m_quitFlag; // if set: die TQString m_clientVersion; // version number returned by rdesktop RdpContainer *m_container; // container for the rdesktop window TDEProcess *m_process; // rdesktop process private slots: void connectionOpened(WId window); // called if rdesktop started void connectionClosed(); // called if rdesktop quits void processDied(TDEProcess *); // called if rdesktop dies void receivedStderr(TDEProcess *proc, char *buffer, int buflen); // catches rdesktop debug output }; #endif