#include <QPainter>
#include <QMouseEvent>
#include <QEvent>
+#include <QSettings>
#include <QTime>
#include <QTimer>
m_clipboard = QApplication::clipboard();
connect(m_clipboard, SIGNAL(selectionChanged()), this, SLOT(clipboardSelectionChanged()));
connect(m_clipboard, SIGNAL(dataChanged()), this, SLOT(clipboardDataChanged()));
+
+ reloadSettings();
}
VncView::~VncView()
static bool tap_drag_detected = false;
static QTime press_time;
static QTime up_time; //used for double clicks/tap&drag, for time after first tap
-static QTime foo;
+
+ const int TAP_PRESS_TIME = 200;
+ const int DOUBLE_TAP_UP_TIME = 500;
if(!e) { //flush held taps
if(tap_detected) {
m_buttonMask &= 0xfe;
vncThread.mouseEvent(cursor_x, cursor_y, m_buttonMask);
tap_detected = false;
- } else if(double_tap_detected and press_time.elapsed() > 200) { //got tap + another press -> tap & drag
+ } else if(double_tap_detected and press_time.elapsed() > TAP_PRESS_TIME) { //got tap + another press -> tap & drag
m_buttonMask |= 0x01;
vncThread.mouseEvent(cursor_x, cursor_y, m_buttonMask);
- foo.start();
double_tap_detected = false;
tap_drag_detected = true;
}
if(e->type() == QEvent::MouseButtonPress or e->type() == QEvent::MouseButtonDblClick) {
press_time.start();
- if(tap_detected and up_time.elapsed() < 500) {
+ if(tap_detected and up_time.elapsed() < DOUBLE_TAP_UP_TIME) {
tap_detected = false;
double_tap_detected = true;
- QTimer::singleShot(200, this, SLOT(mouseEventHandler()));
+ QTimer::singleShot(TAP_PRESS_TIME, this, SLOT(mouseEventHandler()));
}
} else if(e->type() == QEvent::MouseButtonRelease) {
if(tap_drag_detected) {
vncThread.mouseEvent(cursor_x, cursor_y, m_buttonMask);
m_buttonMask &= 0xfe;
vncThread.mouseEvent(cursor_x, cursor_y, m_buttonMask);
- } else if(press_time.elapsed() < 200) { //tap
+ } else if(press_time.elapsed() < TAP_PRESS_TIME) { //tap
up_time.start();
tap_detected = true;
- QTimer::singleShot(500, this, SLOT(mouseEventHandler()));
+ QTimer::singleShot(DOUBLE_TAP_UP_TIME, this, SLOT(mouseEventHandler()));
}
}
}
- //handle clicks via zoom buttons
- if(e->key() == Qt::Key_F8) {
- if(pressed)
- m_buttonMask |= 0x01;
- else
- m_buttonMask &= 0xfe;
- vncThread.mouseEvent(cursor_x, cursor_y, m_buttonMask);
- } else if(e->key() == Qt::Key_F7) {
- if(pressed)
- m_buttonMask |= 0x04;
- else
- m_buttonMask &= 0xfb;
- vncThread.mouseEvent(cursor_x, cursor_y, m_buttonMask);
- } else if (k) {
- vncThread.keyEvent(k, pressed);
- }
+ int current_zoom = -1;
+ if(e->key() == Qt::Key_F8)
+ current_zoom = left_zoom;
+ else if(e->key() == Qt::Key_F7)
+ current_zoom = right_zoom;
+ else if (k)
+ vncThread.keyEvent(k, pressed);
+
+ if(current_zoom == -1)
+ return;
+
+ //handle zoom buttons
+ if(current_zoom == 0) { //left click
+ if(pressed)
+ m_buttonMask |= 0x01;
+ else
+ m_buttonMask &= 0xfe;
+ vncThread.mouseEvent(cursor_x, cursor_y, m_buttonMask);
+ } else if(current_zoom == 1) { //right click
+ if(pressed)
+ m_buttonMask |= 0x04;
+ else
+ m_buttonMask &= 0xfb;
+ vncThread.mouseEvent(cursor_x, cursor_y, m_buttonMask);
+ } else if(current_zoom == 2) { //wheel up
+ int eb = 0x10;
+ vncThread.mouseEvent(cursor_x, cursor_y, eb | m_buttonMask);
+ vncThread.mouseEvent(cursor_x, cursor_y, m_buttonMask);
+ } else if(current_zoom == 3) { //wheel down
+ int eb = 0x8;
+ vncThread.mouseEvent(cursor_x, cursor_y, eb | m_buttonMask);
+ vncThread.mouseEvent(cursor_x, cursor_y, m_buttonMask);
+ } else if(current_zoom == 4) { //page up
+ vncThread.keyEvent(0xff55, pressed);
+ } else if(current_zoom == 5) { //page down
+ vncThread.keyEvent(0xff56, pressed);
+ }
}
void VncView::unpressModifiers()
}
}
+void VncView::reloadSettings()
+{
+ QSettings settings;
+ left_zoom = settings.value("left_zoom", 0).toInt();
+ right_zoom = settings.value("right_zoom", 1).toInt();
+}
+
#include "moc_vncview.cpp"