24a508f4a7f3785124dd2b79ea2ef6e2fcf2bfe6
[presencevnc] / src / mainwindow.h
1 /*
2     Presence VNC
3     Copyright (C) 2010 Christian Pulvermacher
4
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License along
16     with this program; if not, write to the Free Software Foundation, Inc.,
17     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19 #ifndef MAINWINDOW_H
20 #define MAINWINDOW_H
21
22 #include "remoteview.h"
23 #include "vncview.h"
24
25 #include <QtGui>
26
27 class KeyMenu;
28
29 //fix tearing during scrolling
30 class ScrollArea : public QScrollArea {
31 public:
32         ScrollArea(QWidget *parent) : QScrollArea(parent) { }
33 protected:
34         virtual void scrollContentsBy(int dx, int dy)
35         {
36                 QScrollArea::scrollContentsBy(dx, dy);
37                 if(widget())
38                         widget()->update(); //update whole widget
39         }
40 };
41
42
43 class MainWindow : public QMainWindow {
44         Q_OBJECT
45 public:
46         MainWindow(QString url, int quality);
47 public slots:
48         void about();
49         void showConnectDialog();
50         void connectToHost(QString url, int quality, int listen_port);
51         void disconnectFromHost();
52         void forceResize();
53         void forceResizeDelayed();
54         void sendTab() { vnc_view->sendKey(Qt::Key_Tab); }
55         void sendEsc() { vnc_view->sendKey(Qt::Key_Escape); }
56         void sendPgUp() { vnc_view->sendKey(Qt::Key_PageUp); }
57         void sendPgDn() { vnc_view->sendKey(Qt::Key_PageDown); }
58         void sendReturn() { vnc_view->sendKey(Qt::Key_Return); }
59     void setZoomLevel(int level);
60         void showInputPanel();
61         void showKeyMenu();
62         void showPreferences();
63         void statusChanged(RemoteView::RemoteStatus status);
64         void toggleFullscreen();
65 protected:
66         void closeEvent(QCloseEvent*);
67         void resizeEvent(QResizeEvent *event);
68 private:
69         void grabZoomKeys(bool grab);
70         void reloadSettings();
71         VncView *vnc_view;
72         ScrollArea *scroll_area;
73         QToolBar *toolbar;
74         QSlider *zoom_slider;
75         QAction *scaling, *show_toolbar, *disconnect_action;
76         KeyMenu *key_menu;
77 };
78 #endif