summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2014-03-31 13:14:01 +0200
committerKarsten Heimrich <karsten.heimrich@digia.com>2014-04-24 20:07:58 +0200
commitc9d5b84a9487b6a2a944d224ceab3ddf0c5814d8 (patch)
tree60813f7d8962001fc6b90d00f2e86306f4d7c97d
parentb3112e61685eff103de9b33b38dff1e4b7b802ec (diff)
Provide an API to get all wizard pages from java script.
Task-number: QTIFW-477 Change-Id: Ic83df19d20ce310e3e295de929020182e1878273 Reviewed-by: Niels Weber <niels.weber@digia.com>
-rw-r--r--examples/tutorial/packages/com.vendor.product/meta/installscript.qs21
-rw-r--r--examples/tutorial/packages/com.vendor.product/meta/package.xml3
-rw-r--r--examples/tutorial/packages/com.vendor.product/meta/page.ui28
-rw-r--r--src/libs/installer/packagemanagergui.cpp39
-rw-r--r--src/libs/installer/packagemanagergui.h7
-rw-r--r--src/sdk/tabcontroller.cpp2
6 files changed, 86 insertions, 14 deletions
diff --git a/examples/tutorial/packages/com.vendor.product/meta/installscript.qs b/examples/tutorial/packages/com.vendor.product/meta/installscript.qs
index c97f991c3..2c4dae310 100644
--- a/examples/tutorial/packages/com.vendor.product/meta/installscript.qs
+++ b/examples/tutorial/packages/com.vendor.product/meta/installscript.qs
@@ -42,6 +42,9 @@
function Component()
{
// constructor
+ component.loaded.connect(this, Component.prototype.loaded);
+ if (!installer.addWizardPage(component, "Page", QInstaller.TargetDirectory))
+ print("Could not add the dynamic page.");
}
Component.prototype.isDefault = function()
@@ -59,3 +62,21 @@ Component.prototype.createOperations = function()
print(e);
}
}
+
+Component.prototype.loaded = function ()
+{
+ var page = gui.pageByObjectName("DynamicPage");
+ if (page != null) {
+ print("Connecting the dynamic page entered signal.");
+ page.entered.connect(Component.prototype.dynamicPageEntered);
+ }
+}
+
+Component.prototype.dynamicPageEntered = function ()
+{
+ var pageWidget = gui.pageWidgetByObjectName("DynamicPage");
+ if (pageWidget != null) {
+ print("Setting the widgets label text.")
+ pageWidget.m_pageLabel.text = "This is a dynamically created page.";
+ }
+}
diff --git a/examples/tutorial/packages/com.vendor.product/meta/package.xml b/examples/tutorial/packages/com.vendor.product/meta/package.xml
index dd7f4a9d3..71d48c248 100644
--- a/examples/tutorial/packages/com.vendor.product/meta/package.xml
+++ b/examples/tutorial/packages/com.vendor.product/meta/package.xml
@@ -13,4 +13,7 @@
</Translations>
<Default>script</Default>
<Script>installscript.qs</Script>
+ <UserInterfaces>
+ <UserInterface>page.ui</UserInterface>
+ </UserInterfaces>
</Package>
diff --git a/examples/tutorial/packages/com.vendor.product/meta/page.ui b/examples/tutorial/packages/com.vendor.product/meta/page.ui
new file mode 100644
index 000000000..68564efa1
--- /dev/null
+++ b/examples/tutorial/packages/com.vendor.product/meta/page.ui
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Page</class>
+ <widget class="QWidget" name="Page">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Dynamic page example</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="m_pageLabel">
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp
index b4fc797d4..14388776a 100644
--- a/src/libs/installer/packagemanagergui.cpp
+++ b/src/libs/installer/packagemanagergui.cpp
@@ -116,6 +116,8 @@ TRANSLATOR QInstaller::FinishedPage
class DynamicInstallerPage : public PackageManagerPage
{
+ Q_OBJECT
+
public:
explicit DynamicInstallerPage(QWidget *widget, PackageManagerCore *core = 0)
: PackageManagerPage(core)
@@ -124,13 +126,17 @@ public:
setObjectName(QLatin1String("Dynamic") + widget->objectName());
setPixmap(QWizard::WatermarkPixmap, QPixmap());
- setLayout(new QVBoxLayout);
setColoredSubTitle(QLatin1String(" "));
setColoredTitle(widget->windowTitle());
m_widget->setProperty("complete", true);
m_widget->setProperty("final", false);
+ m_widget->setProperty("commit", false);
widget->installEventFilter(this);
+
+ setLayout(new QVBoxLayout);
layout()->addWidget(widget);
+ layout()->setContentsMargins(0, 0, 0, 0);
+ layout()->addItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
}
QWidget *widget() const
@@ -156,6 +162,8 @@ protected:
emit completeChanged();
if (m_widget->property("final").toBool() != isFinalPage())
setFinalPage(m_widget->property("final").toBool());
+ if (m_widget->property("commit").toBool() != isCommitPage())
+ setFinalPage(m_widget->property("commit").toBool());
break;
default:
@@ -505,25 +513,20 @@ void PackageManagerGui::wizardPageVisibilityChangeRequested(bool visible, int p)
}
}
-PackageManagerPage *PackageManagerGui::page(int pageId) const
+QWidget *PackageManagerGui::pageById(int id) const
{
- return qobject_cast<PackageManagerPage*> (QWizard::page(pageId));
+ return page(id);
}
-QWidget *PackageManagerGui::pageWidgetByObjectName(const QString &name) const
+QWidget *PackageManagerGui::pageByObjectName(const QString &name) const
{
const QList<int> ids = pageIds();
foreach (const int i, ids) {
PackageManagerPage *const p = qobject_cast<PackageManagerPage*> (page(i));
- if (p && p->objectName() == name) {
- // For dynamic pages, return the contained widget (as read from the UI file), not the
- // wrapper page
- if (DynamicInstallerPage *dp = dynamic_cast<DynamicInstallerPage*>(p))
- return dp->widget();
+ if (p && p->objectName() == name)
return p;
- }
}
- qDebug() << "No page found for object name" << name;
+ qWarning() << "No page found for object name" << name;
return 0;
}
@@ -532,6 +535,20 @@ QWidget *PackageManagerGui::currentPageWidget() const
return currentPage();
}
+QWidget *PackageManagerGui::pageWidgetByObjectName(const QString &name) const
+{
+ QWidget *const widget = pageByObjectName(name);
+ if (PackageManagerPage *const p = qobject_cast<PackageManagerPage*> (widget)) {
+ // For dynamic pages, return the contained widget (as read from the UI file), not the
+ // wrapper page
+ if (DynamicInstallerPage *dp = qobject_cast<DynamicInstallerPage *>(p))
+ return dp->widget();
+ return p;
+ }
+ qWarning() << "No page found for object name" << name;
+ return 0;
+}
+
void PackageManagerGui::cancelButtonClicked()
{
const int id = currentId();
diff --git a/src/libs/installer/packagemanagergui.h b/src/libs/installer/packagemanagergui.h
index 948fb346a..906f3530d 100644
--- a/src/libs/installer/packagemanagergui.h
+++ b/src/libs/installer/packagemanagergui.h
@@ -83,9 +83,12 @@ public:
void loadControlScript(const QString& scriptPath);
void callControlScriptMethod(const QString& methodName);
- Q_INVOKABLE PackageManagerPage* page(int pageId) const;
- Q_INVOKABLE QWidget* pageWidgetByObjectName(const QString& name) const;
+ Q_INVOKABLE QWidget *pageById(int id) const;
+ Q_INVOKABLE QWidget *pageByObjectName(const QString &name) const;
+
Q_INVOKABLE QWidget* currentPageWidget() const;
+ Q_INVOKABLE QWidget* 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);
diff --git a/src/sdk/tabcontroller.cpp b/src/sdk/tabcontroller.cpp
index d0e322251..0bc832e9f 100644
--- a/src/sdk/tabcontroller.cpp
+++ b/src/sdk/tabcontroller.cpp
@@ -197,7 +197,7 @@ void TabController::onSettingsButtonClicked()
void TabController::onCurrentIdChanged(int newId)
{
if (d->m_gui) {
- if (PackageManagerPage *page = d->m_gui->page(newId))
+ if (PackageManagerPage *page = qobject_cast<PackageManagerPage *>(d->m_gui->page(newId)))
d->m_gui->showSettingsButton(page->settingsButtonRequested());
}
}