/*************************************************************************** krdc.h - main window ------------------- begin : Tue May 13 23:10:42 CET 2002 copyright : (C) 2002-2003 by Tim Jansen email : tim@tjansen.de ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef KRDC_H #define KRDC_H #include #include #include #include #include #include #include #include "vnc/kvncview.h" #include "rdp/krdpview.h" #include "kfullscreenpanel.h" #include "vidmode.h" #include "smartptr.h" #include "keycapturedialog.h" class TQPixmap; class TDEToolBar; class TQPopupMenu; class TQDockArea; enum WindowMode { WINDOW_MODE_AUTO, WINDOW_MODE_NORMAL, WINDOW_MODE_FULLSCREEN }; // known protocols enum Protocol { PROTOCOL_AUTO, PROTOCOL_VNC, PROTOCOL_RDP }; // Overloaded TQScrollView, to let mouse move events through to remote widget class TQScrollView2 : public TQScrollView { public: TQScrollView2(TQWidget *w, const char *name); protected: virtual void mouseMoveEvent(TQMouseEvent *e); }; class KRDC : public TQWidget { Q_OBJECT private: SmartPtr m_progressDialog; // dialog, displayed while connecting TQVBoxLayout *m_layout; // the layout for autosizing the scrollview TQScrollView *m_scrollView; // scrollview that contains the remote widget KProgress *m_progress; // progress bar for the dialog KRemoteView *m_view; // the remote widget (e.g. KVncView) SmartPtr m_keyCaptureDialog; // dialog for key capturing KFullscreenPanel *m_fsToolbar; // toolbar for fullscreen (0 in normal mode) TQWidget *m_fsToolbarWidget; // qt designer widget for fs toolbar // (invalid in normal mode) TQPixmap m_pinup, m_pindown; // fs toolbar imaged for autohide button TDEToolBar *m_toolbar; // toolbar in normal mode (0 in fs mode) TQDockArea *m_dockArea; // dock area for toolbar in normal mode (0 in fs mode) TQPopupMenu *m_popup; // advanced options popup (0 in fs mode) TQDesktopWidget m_desktopWidget; static const int TOOLBAR_AUTOHIDE_TIMEOUT; bool m_ftAutoHide; // if true auto hide in fs is activated TQTimer m_autoHideTimer; // timer for autohide TQTimer m_bumpScrollTimer; // timer for bump scrolling (in fs, when res too large) bool m_showProgress; // can disable showing the progress dialog temporary TQString m_host; // host string as given from user Protocol m_protocol; // the used protocol Quality m_quality; // current quality setting TQString m_encodings; // string containing the encodings, space separated, // used for config before connection TQString m_password; // if not null, contains the password to use TQString m_resolution;// contains an alternative resolution TQString m_keymap; // keymap on the terminal server WindowMode m_isFullscreen; // fs/normal state Resolution m_oldResolution; // conatins encoded res before fs bool m_fullscreenMinimized; // true if window is currently minimized from fs TQSize m_fullscreenResolution; // xvidmode size (valid only in fs) bool m_windowScaling; // used in startup and fullscreen to determine // whether scaling should be enabled in norm mode. // The current state is m_view->scaled(). bool m_localCursor; // show local cursor no matter what TQSize m_initialWindowSize; // initial window size (windowed mode only), // invalid after first use static TQString m_lastHost; // remembers last value of host input bool parseHost(TQString &s, Protocol &prot, TQString &serverHost, int &serverPort, TQString &userName, TQString &password); void repositionView(bool fullscreen); void showProgressDialog(); void hideProgressDialog(); static const int TOOLBAR_FPS_1000; static const int TOOLBAR_SPEED_DOWN; static const int TOOLBAR_SPEED_UP; void fsToolbarScheduleHidden(); TQPopupMenu *createPopupMenu(TQWidget *parent) const; protected: virtual void mouseMoveEvent(TQMouseEvent *e); virtual bool event(TQEvent *e); virtual bool eventFilter(TQObject *watched, TQEvent *e); virtual TQSize sizeHint(); public: KRDC(WindowMode wm = WINDOW_MODE_AUTO, const TQString &host = TQString(), Quality q = QUALITY_UNKNOWN, const TQString &encodings = TQString(), const TQString &password = TQString(), bool scale = false, bool localCursor = false, TQSize initialWindowSize = TQSize()); ~KRDC(); bool start(); static void setLastHost(const TQString &host); private slots: void changeProgress(RemoteViewStatus s); void showingPasswordDialog(bool b); void showProgressTimeout(); void setSize(int w, int h); void iconify(); void toolbarChanged(); void bumpScroll(); void toggleFsToolbarAutoHide(); void setFsToolbarAutoHide(bool on); void showFullscreenToolbar(); void hideFullscreenToolbarDelayed(); void hideFullscreenToolbarNow(); public slots: void quit(); void enableFullscreen(bool full = false); void switchToNormal(bool scaling = false); void switchToFullscreen(bool scaling = false); void viewOnlyToggled(); void showLocalCursorToggled(); signals: void disconnected(); void disconnectedError(); }; #endif