From 3235629a868ace7a1f1f4d79ef7474ca30b2123e Mon Sep 17 00:00:00 2001 From: Katja Marttila Date: Tue, 2 Jun 2020 15:33:01 +0300 Subject: Add function to enable button click with objectname Task-number: QTIFW-1707 Change-Id: I8574ef96df6a00e577549342d4a4336207dcd9ec Reviewed-by: Arttu Tarkiainen --- doc/scripting-api/gui.qdoc | 7 +++++++ src/libs/installer/packagemanagergui.cpp | 14 ++++++++++++++ src/libs/installer/packagemanagergui.h | 1 + src/libs/installer/scriptengine.cpp | 10 ++++++++++ src/libs/installer/scriptengine_p.h | 1 + 5 files changed, 33 insertions(+) diff --git a/doc/scripting-api/gui.qdoc b/doc/scripting-api/gui.qdoc index de8e2a663..35539c6be 100644 --- a/doc/scripting-api/gui.qdoc +++ b/doc/scripting-api/gui.qdoc @@ -103,6 +103,13 @@ in milliseconds specified by \a delayInMs. */ +/*! + \qmlmethod void gui::clickButton(string objectName, int delayInMs) + + Automatically clicks the button specified by \a objectName after a delay + in milliseconds specified by \a delayInMs. +*/ + /*! \qmlmethod boolean gui::isButtonEnabled(int wizardButton) diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp index d80709416..751076f9a 100644 --- a/src/libs/installer/packagemanagergui.cpp +++ b/src/libs/installer/packagemanagergui.cpp @@ -529,6 +529,20 @@ void PackageManagerGui::clickButton(int wb, int delay) qCWarning(QInstaller::lcInstallerInstallLog) << "Button with type: " << d->buttonType(wb) << "not found!"; } +/*! + Clicks the button specified by \a objectName after the delay specified by \a delay. + + \sa {gui::clickButton}{gui.clickButton} +*/ +void PackageManagerGui::clickButton(const QString &objectName, int delay) const +{ + QPushButton *button = findChild(objectName); + if (button) + QTimer::singleShot(delay, button, &QAbstractButton::click); + else + qCWarning(QInstaller::lcInstallerInstallLog) << "Button with objectname: " << objectName << "not found!"; +} + /*! Returns \c true if the button specified by \a wb is enabled. Returns \c false if a button of the specified type is not found. diff --git a/src/libs/installer/packagemanagergui.h b/src/libs/installer/packagemanagergui.h index e08b366cd..70ec43aca 100644 --- a/src/libs/installer/packagemanagergui.h +++ b/src/libs/installer/packagemanagergui.h @@ -80,6 +80,7 @@ public: QString defaultButtonText(int wizardButton) const; void clickButton(int wizardButton, int delayInMs = 0); + void clickButton(const QString &objectName, int delayInMs = 0) const; bool isButtonEnabled(int wizardButton); void showSettingsButton(bool show); diff --git a/src/libs/installer/scriptengine.cpp b/src/libs/installer/scriptengine.cpp index accd54957..55940df61 100644 --- a/src/libs/installer/scriptengine.cpp +++ b/src/libs/installer/scriptengine.cpp @@ -178,6 +178,16 @@ void GuiProxy::clickButton(int wizardButton, int delayInMs) m_gui->clickButton(wizardButton, delayInMs); } +/*! + Automatically clicks the button specified by \a objectName after a delay + in milliseconds specified by \a delayInMs. +*/ +void GuiProxy::clickButton(const QString &objectName, int delayInMs) const +{ + if (m_gui) + m_gui->clickButton(objectName, delayInMs); +} + bool GuiProxy::isButtonEnabled(int wizardButton) { if (!m_gui) diff --git a/src/libs/installer/scriptengine_p.h b/src/libs/installer/scriptengine_p.h index 0fc963bf9..bf8240d98 100644 --- a/src/libs/installer/scriptengine_p.h +++ b/src/libs/installer/scriptengine_p.h @@ -160,6 +160,7 @@ public: Q_INVOKABLE QString defaultButtonText(int wizardButton) const; Q_INVOKABLE void clickButton(int wizardButton, int delayInMs = 0); + Q_INVOKABLE void clickButton(const QString &objectName, int delayInMs = 0) const; Q_INVOKABLE bool isButtonEnabled(int wizardButton); Q_INVOKABLE void showSettingsButton(bool show); -- cgit v1.2.3