// Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifndef CONTROLSTESTUTILS_P_H #define CONTROLSTESTUTILS_P_H // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // #include #include QT_BEGIN_NAMESPACE class QQmlComponent; class QQmlEngine; class QQuickApplicationWindow; class QQuickAbstractButton; class QQuickControl; namespace QQuickControlsTestUtils { class QQuickControlsApplicationHelper : public QQuickVisualTestUtils::QQuickApplicationHelper { public: QQuickControlsApplicationHelper(QQmlDataTest *testCase, const QString &testFilePath, const QVariantMap &initialProperties = {}, const QStringList &qmlImportPaths = {}); QQuickApplicationWindow *appWindow = nullptr; }; struct QQuickStyleHelper { [[nodiscard]] bool updateStyle(const QString &style); QString currentStyle; QScopedPointer engine; }; typedef std::function ForEachCallback; void forEachControl(QQmlEngine *engine, const QString &qqc2ImportPath, const QString &sourcePath, const QString &targetPath, const QStringList &skipList, ForEachCallback callback); void addTestRowForEachControl(QQmlEngine *engine, const QString &qqc2ImportPath, const QString &sourcePath, const QString &targetPath, const QStringList &skipList = QStringList()); [[nodiscard]] bool verifyButtonClickable(QQuickAbstractButton *button); [[nodiscard]] bool clickButton(QQuickAbstractButton *button); [[nodiscard]] bool doubleClickButton(QQuickAbstractButton *button); [[nodiscard]] QString visualFocusFailureMessage(QQuickControl *control); class ComponentCreator : public QObject { Q_OBJECT QML_ELEMENT QML_SINGLETON Q_MOC_INCLUDE() public: Q_INVOKABLE QQmlComponent *createComponent(const QByteArray &data); }; class StyleInfo : public QObject { Q_OBJECT Q_PROPERTY(QString styleName READ styleName CONSTANT FINAL) QML_ELEMENT QML_SINGLETON public: QString styleName() const; }; class MockPlatformTheme : public QPlatformTheme { Qt::ColorScheme colorScheme() const override { return m_colorScheme; } void requestColorScheme(Qt::ColorScheme theme) override { m_colorScheme = theme; QWindowSystemInterface::handleThemeChange(); } private: Qt::ColorScheme m_colorScheme = QGuiApplication::styleHints()->colorScheme(); }; [[nodiscard]] bool arePopupWindowsSupported(); } namespace QQuickTest { // Overload of the one in quicktest.h. [[nodiscard]] QString qActiveFocusFailureMessage(QQuickPopup *popup); } #define VERIFY_VISUAL_FOCUS(control) \ do { \ QVERIFY2(control->hasVisualFocus(), qUtf8Printable(visualFocusFailureMessage(control))); \ } while (false) QT_END_NAMESPACE #endif // CONTROLSTESTUTILS_P_H