You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdenetwork/krdc/krdc.h

176 lines
6.1 KiB

/***************************************************************************
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 <kprogress.h>
#include <tqscrollview.h>
#include <tqlayout.h>
#include <tqsize.h>
#include <tqrect.h>
#include <tqtimer.h>
#include <tqdesktopwidget.h>
#include "vnc/kvncview.h"
#include "rdp/krdpview.h"
#include "kfullscreenpanel.h"
#include "vidmode.h"
#include "smartptr.h"
#include "keycapturedialog.h"
class QPixmap;
class KToolBar;
class QPopupMenu;
class QDockArea;
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 QScrollView2 : public TQScrollView {
public:
QScrollView2(TQWidget *w, const char *name);
protected:
virtual void mouseMoveEvent(TQMouseEvent *e);
};
class KRDC : public QWidget
{
Q_OBJECT
private:
SmartPtr<KProgressDialog> 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<KeyCaptureDialog> 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
KToolBar *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::null,
Quality q = QUALITY_UNKNOWN,
const TQString &encodings = TQString::null,
const TQString &password = TQString::null,
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