summaryrefslogtreecommitdiffstats
path: root/tests/manual
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual')
-rw-r--r--tests/manual/qtabletevent/device_information/main.cpp20
-rw-r--r--tests/manual/qtabletevent/device_information/tabletwidget.cpp34
-rw-r--r--tests/manual/qtabletevent/device_information/tabletwidget.h7
-rw-r--r--tests/manual/qtabletevent/regular_widgets/main.cpp105
4 files changed, 127 insertions, 39 deletions
diff --git a/tests/manual/qtabletevent/device_information/main.cpp b/tests/manual/qtabletevent/device_information/main.cpp
index 54f9f5cb54..1c83023cee 100644
--- a/tests/manual/qtabletevent/device_information/main.cpp
+++ b/tests/manual/qtabletevent/device_information/main.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the test suite of the Qt Toolkit.
@@ -40,11 +40,21 @@
****************************************************************************/
#include <QApplication>
+#include <QDebug>
#include "tabletwidget.h"
int main(int argc, char **argv) {
- QApplication app(argc, argv);
- TabletWidget tabletWidget;
- tabletWidget.showMaximized();
- return app.exec();
+ QApplication app(argc, argv);
+ bool mouseToo = false;
+ if (app.arguments().contains(QLatin1String("--nomouse")) || app.arguments().contains(QLatin1String("-nomouse")))
+ mouseToo = false;
+ else if (app.arguments().contains(QLatin1String("--mouse")) || app.arguments().contains(QLatin1String("-mouse")))
+ mouseToo = true;
+ if (mouseToo)
+ qDebug() << "will show mouse events coming from the tablet as well as QTabletEvents";
+ else
+ qDebug() << "will not show mouse events from the tablet; use the --mouse option to enable";
+ TabletWidget tabletWidget(mouseToo);
+ tabletWidget.showMaximized();
+ return app.exec();
}
diff --git a/tests/manual/qtabletevent/device_information/tabletwidget.cpp b/tests/manual/qtabletevent/device_information/tabletwidget.cpp
index 7b5de72e27..c2fbe76e5b 100644
--- a/tests/manual/qtabletevent/device_information/tabletwidget.cpp
+++ b/tests/manual/qtabletevent/device_information/tabletwidget.cpp
@@ -42,8 +42,11 @@
#include "tabletwidget.h"
#include <QPainter>
#include <QApplication>
+#include <QDebug>
+#include <QMetaObject>
+#include <QMetaEnum>
-TabletWidget::TabletWidget()
+TabletWidget::TabletWidget(bool mouseToo) : mMouseToo(mouseToo)
{
QPalette newPalette = palette();
newPalette.setColor(QPalette::Window, Qt::white);
@@ -76,12 +79,14 @@ bool TabletWidget::eventFilter(QObject *, QEvent *ev)
mPress = event->pressure();
mTangential = event->tangentialPressure();
mRot = event->rotation();
+ mButton = event->button();
+ mButtons = event->buttons();
if (isVisible())
update();
break;
}
case QEvent::MouseMove:
- {
+ if (mMouseToo) {
resetAttributes();
QMouseEvent *event = static_cast<QMouseEvent*>(ev);
mType = event->type();
@@ -129,7 +134,7 @@ void TabletWidget::paintEvent(QPaintEvent *)
|| mType == QEvent::TabletMove || mType == QEvent::TabletPress
|| mType == QEvent::TabletRelease) {
- eventInfo << QString("Hight res global position: %1 %2").arg(QString::number(mHiResGlobalPos.x()), QString::number(mHiResGlobalPos.y()));
+ eventInfo << QString("High res global position: %1 %2").arg(QString::number(mHiResGlobalPos.x()), QString::number(mHiResGlobalPos.y()));
QString pointerType("Pointer type: ");
switch (mPointerType) {
@@ -148,7 +153,6 @@ void TabletWidget::paintEvent(QPaintEvent *)
}
eventInfo << pointerType;
-
QString deviceString = "Device type: ";
switch (mDev) {
case QTabletEvent::NoDevice:
@@ -172,6 +176,8 @@ void TabletWidget::paintEvent(QPaintEvent *)
}
eventInfo << deviceString;
+ eventInfo << QString("Button: %1 (0x%2)").arg(buttonToString(mButton)).arg(mButton, 0, 16);
+ eventInfo << QString("Buttons currently pressed: %1 (0x%2)").arg(buttonsToString(mButtons)).arg(mButtons, 0, 16);
eventInfo << QString("Pressure: %1").arg(QString::number(mPress));
eventInfo << QString("Tangential pressure: %1").arg(QString::number(mTangential));
eventInfo << QString("Rotation: %1").arg(QString::number(mRot));
@@ -182,7 +188,25 @@ void TabletWidget::paintEvent(QPaintEvent *)
eventInfo << QString("Unique Id: %1").arg(QString::number(mUnique));
}
- painter.drawText(rect(), eventInfo.join("\n"));
+ QString text = eventInfo.join("\n");
+ painter.drawText(rect(), text);
+}
+
+const char *TabletWidget::buttonToString(Qt::MouseButton b)
+{
+ static int enumIdx = QObject::staticQtMetaObject.indexOfEnumerator("MouseButtons");
+ return QObject::staticQtMetaObject.enumerator(enumIdx).valueToKey(b);
+}
+
+QString TabletWidget::buttonsToString(Qt::MouseButtons bs)
+{
+ QStringList ret;
+ for (int i = 0; (uint)(1 << i) <= Qt::MaxMouseButton; ++i) {
+ Qt::MouseButton b = static_cast<Qt::MouseButton>(1 << i);
+ if (bs.testFlag(b))
+ ret << buttonToString(b);
+ }
+ return ret.join("|");
}
void TabletWidget::tabletEvent(QTabletEvent *event)
diff --git a/tests/manual/qtabletevent/device_information/tabletwidget.h b/tests/manual/qtabletevent/device_information/tabletwidget.h
index a60fa8d83f..8efdd63697 100644
--- a/tests/manual/qtabletevent/device_information/tabletwidget.h
+++ b/tests/manual/qtabletevent/device_information/tabletwidget.h
@@ -49,11 +49,13 @@
class TabletWidget : public QWidget
{
public:
- TabletWidget();
+ TabletWidget(bool mouseToo);
protected:
bool eventFilter(QObject *obj, QEvent *ev);
void tabletEvent(QTabletEvent *event);
void paintEvent(QPaintEvent *event);
+ const char *buttonToString(Qt::MouseButton b);
+ QString buttonsToString(Qt::MouseButtons bs);
private:
void resetAttributes() {
mType = mDev = mPointerType = mXT = mYT = mZ = 0;
@@ -66,8 +68,11 @@ private:
QPoint mPos, mGPos;
QPointF mHiResGlobalPos;
int mDev, mPointerType, mXT, mYT, mZ;
+ Qt::MouseButton mButton;
+ Qt::MouseButtons mButtons;
qreal mPress, mTangential, mRot;
qint64 mUnique;
+ bool mMouseToo;
};
#endif // TABLETWIDGET_H
diff --git a/tests/manual/qtabletevent/regular_widgets/main.cpp b/tests/manual/qtabletevent/regular_widgets/main.cpp
index ce77cf8cff..60bedbd8f4 100644
--- a/tests/manual/qtabletevent/regular_widgets/main.cpp
+++ b/tests/manual/qtabletevent/regular_widgets/main.cpp
@@ -54,16 +54,20 @@
enum TabletPointType {
TabletButtonPress,
TabletButtonRelease,
- TabletMove,
- TabletDraw
+ TabletMove
};
struct TabletPoint
{
- TabletPoint(const QPoint &p = QPoint(), TabletPointType t = TabletMove) : pos(p), type(t) {}
+ TabletPoint(const QPointF &p = QPointF(), TabletPointType t = TabletMove,
+ Qt::MouseButton b = Qt::LeftButton, QTabletEvent::PointerType pt = QTabletEvent::UnknownPointer, qreal prs = 0) :
+ pos(p), type(t), button(b), ptype(pt), pressure(prs) {}
- QPoint pos;
+ QPointF pos;
TabletPointType type;
+ Qt::MouseButton button;
+ QTabletEvent::PointerType ptype;
+ qreal pressure;
};
class EventReportWidget : public QWidget
@@ -90,36 +94,47 @@ private:
bool m_lastIsMouseMove;
bool m_lastIsTabletMove;
+ Qt::MouseButton m_lastButton;
QVector<TabletPoint> m_points;
};
EventReportWidget::EventReportWidget()
: m_lastIsMouseMove(false)
, m_lastIsTabletMove(false)
+ , m_lastButton(Qt::NoButton)
{ }
void EventReportWidget::paintEvent(QPaintEvent *)
{
QPainter p(this);
- const QRect geom = QRect(QPoint(0, 0), size());
+ const QRectF geom = QRectF(QPoint(0, 0), size());
p.fillRect(geom, Qt::white);
- p.drawRect(QRect(geom.topLeft(), geom.bottomRight() - QPoint(1,1)));
+ p.drawRect(QRectF(geom.topLeft(), geom.bottomRight() - QPointF(1,1)));
+ p.setPen(Qt::white);
foreach (const TabletPoint &t, m_points) {
if (geom.contains(t.pos)) {
QPainterPath pp;
- pp.addEllipse(t.pos, 5, 5);
+ pp.addEllipse(t.pos, 8, 8);
+ QRectF pointBounds(t.pos.x() - 10, t.pos.y() - 10, 20, 20);
switch (t.type) {
case TabletButtonPress:
- p.fillPath(pp, Qt::black);
+ p.fillPath(pp, Qt::darkGreen);
+ if (t.button != Qt::NoButton)
+ p.drawText(pointBounds, Qt::AlignCenter, QString::number(t.button));
break;
case TabletButtonRelease:
p.fillPath(pp, Qt::red);
+ if (t.button != Qt::NoButton)
+ p.drawText(pointBounds, Qt::AlignCenter, QString::number(t.button));
break;
case TabletMove:
- p.drawPath(pp);
- break;
- case TabletDraw:
- p.fillPath(pp, Qt::blue);
+ if (t.pressure > 0.0) {
+ p.setPen(t.ptype == QTabletEvent::Eraser ? Qt::red : Qt::black);
+ p.drawEllipse(t.pos, t.pressure * 10.0, t.pressure * 10.0);
+ p.setPen(Qt::white);
+ } else {
+ p.fillRect(t.pos.x() - 2, t.pos.y() - 2, 4, 4, Qt::black);
+ }
break;
}
}
@@ -128,37 +143,30 @@ void EventReportWidget::paintEvent(QPaintEvent *)
void EventReportWidget::tabletEvent(QTabletEvent *event)
{
- QWidget::tabletEvent(event);
+ QWidget::tabletEvent(event);
QString type;
switch (event->type()) {
case QEvent::TabletEnterProximity:
- m_lastIsTabletMove = false;
type = QString::fromLatin1("TabletEnterProximity");
break;
case QEvent::TabletLeaveProximity:
- m_lastIsTabletMove = false;
type = QString::fromLatin1("TabletLeaveProximity");
break;
case QEvent::TabletMove:
- if (m_lastIsTabletMove)
- return;
-
- m_lastIsTabletMove = true;
type = QString::fromLatin1("TabletMove");
- m_points.push_back(TabletPoint(event->pos(), event->pressure() ? TabletDraw : TabletMove));
+ m_points.push_back(TabletPoint(event->pos(), TabletMove, m_lastButton, event->pointerType(), event->pressure()));
update();
break;
case QEvent::TabletPress:
- m_lastIsTabletMove = false;
type = QString::fromLatin1("TabletPress");
- m_points.push_back(TabletPoint(event->pos(), TabletButtonPress));
+ m_points.push_back(TabletPoint(event->pos(), TabletButtonPress, event->button(), event->pointerType()));
+ m_lastButton = event->button();
update();
break;
case QEvent::TabletRelease:
- m_lastIsTabletMove = false;
type = QString::fromLatin1("TabletRelease");
- m_points.push_back(TabletPoint(event->pos(), TabletButtonRelease));
+ m_points.push_back(TabletPoint(event->pos(), TabletButtonRelease, event->button(), event->pointerType()));
update();
break;
default:
@@ -166,10 +174,51 @@ void EventReportWidget::tabletEvent(QTabletEvent *event)
break;
}
- qDebug() << "Tablet event, type = " << type
- << " position = " << event->pos()
- << " global position = " << event->globalPos()
- << " cursor at " << QCursor::pos();
+ QString pointerType = "UNKNOWN";
+ switch (event->pointerType()) {
+ case QTabletEvent::Pen:
+ pointerType = "Pen";
+ break;
+ case QTabletEvent::Cursor:
+ pointerType = "Cursor";
+ break;
+ case QTabletEvent::Eraser:
+ pointerType = "Eraser";
+ break;
+ default:
+ break;
+ }
+
+ QString device = "UNKNOWN";
+ switch (event->device()) {
+ case QTabletEvent::Puck:
+ pointerType = "Puck";
+ break;
+ case QTabletEvent::Stylus:
+ pointerType = "Stylus";
+ break;
+ case QTabletEvent::Airbrush:
+ pointerType = "Airbrush";
+ break;
+ case QTabletEvent::FourDMouse:
+ pointerType = "FourDMouse";
+ break;
+ case QTabletEvent::RotationStylus:
+ pointerType = "RotationStylus";
+ break;
+ default:
+ break;
+ }
+
+ if (!m_lastIsTabletMove)
+ qDebug() << "Tablet event, type = " << type
+ << " position = " << event->pos()
+ << " global position = " << event->globalPos()
+ << " cursor at " << QCursor::pos()
+ << " buttons " << event->buttons() << " changed " << event->button()
+ << " pointer type " << pointerType << " device " << device;
+
+ m_lastIsTabletMove = (event->type() == QEvent::TabletMove);
}
void EventReportWidget::outputMouseEvent(QMouseEvent *event)