From f87efd7c14e0a332341e58ed1e52d46328e31d03 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Tue, 6 Jan 2015 10:56:49 +0100 Subject: Fix objects returned by gui methods We need to make sure objects like pageWidgetByObjectName are augmented too (so that one can access child objects). This is achieved by a proxy object that augments all raw QObject * and QWidget * return values. This fixes e.g. the dynamicpage example. Task-number: QTIFW-605 Change-Id: If26dc59220946a7445ef0f9ec7caa15e5b04eaa8 Reviewed-by: Niels Weber --- src/libs/installer/scriptengine_p.h | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'src/libs/installer/scriptengine_p.h') diff --git a/src/libs/installer/scriptengine_p.h b/src/libs/installer/scriptengine_p.h index d207130d7..696073703 100644 --- a/src/libs/installer/scriptengine_p.h +++ b/src/libs/installer/scriptengine_p.h @@ -37,6 +37,7 @@ #include "component.h" #include "packagemanagercore.h" +#include "packagemanagergui.h" #include #include @@ -137,6 +138,50 @@ public slots: }; #endif +class GuiProxy : public QObject +{ + Q_OBJECT + Q_DISABLE_COPY(GuiProxy) + +public: + GuiProxy(ScriptEngine *engine, QObject *parent); + void setPackageManagerGui(PackageManagerGui *gui); + + Q_INVOKABLE QJSValue pageById(int id) const; + Q_INVOKABLE QJSValue pageByObjectName(const QString &name) const; + + Q_INVOKABLE QJSValue currentPageWidget() const; + Q_INVOKABLE QJSValue pageWidgetByObjectName(const QString &name) const; + + Q_INVOKABLE QString defaultButtonText(int wizardButton) const; + Q_INVOKABLE void clickButton(int wizardButton, int delayInMs = 0); + Q_INVOKABLE bool isButtonEnabled(int wizardButton); + + Q_INVOKABLE void showSettingsButton(bool show); + Q_INVOKABLE void setSettingsButtonEnabled(bool enable); + + Q_INVOKABLE QJSValue findChild(QObject *parent, const QString &objectName); + Q_INVOKABLE QList findChildren(QObject *parent, const QString &objectName); + +signals: + void interrupted(); + void languageChanged(); + void finishButtonClicked(); + void gotRestarted(); + void settingsButtonClicked(); + +public slots: + void cancelButtonClicked(); + void reject(); + void rejectWithoutPrompt(); + void showFinishedPage(); + void setModified(bool value); + +private: + ScriptEngine *m_engine; + PackageManagerGui *m_gui; +}; + } // namespace QInstaller Q_DECLARE_METATYPE(QInstaller::ConsoleProxy*) -- cgit v1.2.3