blob: 4e67e9a039e53b36ca1530ad88a34c178b73d447 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "capturedevent.h"
#include <QMetaEnum>
#include <QMouseEvent>
namespace {
static inline bool isMouseEvent(const QEvent &event)
{
return event.type() >= QEvent::MouseButtonPress && event.type() <= QEvent::MouseMove;
}
}
CapturedEvent::CapturedEvent()
{
}
CapturedEvent::CapturedEvent(const QEvent &event, int delay)
{
setEvent(event);
setDelay(delay);
}
void CapturedEvent::setEvent(const QEvent &event)
{
mType = event.type();
if (isMouseEvent(event)) {
const QMouseEvent *mouseEvent = static_cast<const QMouseEvent*>(&event);
mPos = mouseEvent->pos();
mMouseButton = mouseEvent->button();
}
}
QEvent::Type CapturedEvent::type() const
{
return mType;
}
int CapturedEvent::delay() const
{
return mDelay;
}
void CapturedEvent::setDelay(int delay)
{
mDelay = delay;
mCppCommand.clear();
// We generate the C++ command here instead of when the event is captured,
// because events() might trim some events, causing the delay of some events to change.
// If we did it earlier, the events wouldn't have correct delays.
if (mType == QEvent::MouseMove) {
mCppCommand = QString::fromLatin1("QTest::mouseMove(&view, QPoint(%1, %2), %3);")
.arg(mPos.x())
.arg(mPos.y())
.arg(mDelay);
} else if (mType >= QEvent::MouseButtonPress && mType <= QEvent::MouseButtonDblClick) {
QString eventTestFunctionName = (mType == QEvent::MouseButtonPress
? "mousePress" : (mType == QEvent::MouseButtonRelease
? "mouseRelease" : "mouseDClick"));
QString buttonStr = QMetaEnum::fromType<Qt::MouseButtons>().valueToKey(mMouseButton);
mCppCommand = QString::fromLatin1("QTest::%1(&view, Qt::%2, Qt::NoModifier, QPoint(%3, %4), %5);")
.arg(eventTestFunctionName)
.arg(buttonStr)
.arg(mPos.x())
.arg(mPos.y())
.arg(mDelay);
}
}
QString CapturedEvent::cppCommand() const
{
return mCppCommand;
}
|