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;
}
|