diff options
Diffstat (limited to 'src/libs/installer/packagemanagergui.cpp')
-rw-r--r-- | src/libs/installer/packagemanagergui.cpp | 118 |
1 files changed, 53 insertions, 65 deletions
diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp index 5b9e7493a..46ba310ba 100644 --- a/src/libs/installer/packagemanagergui.cpp +++ b/src/libs/installer/packagemanagergui.cpp @@ -177,7 +177,8 @@ protected: void addPageAndProperties(ScriptEngine *engine) { - engine->addQObjectChildren(this); + engine->addToGlobalObject(this); + engine->addToGlobalObject(widget()); static const QStringList properties = QStringList() << QStringLiteral("final") << QStringLiteral("commit") << QStringLiteral("complete"); @@ -203,7 +204,8 @@ class PackageManagerGui::Private { public: Private() - : m_modified(false) + : m_currentId(-1) + , m_modified(false) , m_autoSwitchPage(true) , m_showSettingsButton(false) { @@ -225,7 +227,7 @@ public: QLatin1String("unknown button")); } - + int m_currentId; bool m_modified; bool m_autoSwitchPage; bool m_showSettingsButton; @@ -281,7 +283,7 @@ PackageManagerGui::PackageManagerGui(PackageManagerCore *core, QWidget *parent) connect(m_core, SIGNAL(uninstallationFinished()), this, SLOT(showFinishedPage()), Qt::QueuedConnection); - connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(executeControlScript(int))); + connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(currentPageChanged(int))); connect(this, SIGNAL(currentIdChanged(int)), m_core, SIGNAL(currentPageChanged(int))); connect(button(QWizard::FinishButton), SIGNAL(clicked()), this, SIGNAL(finishButtonClicked())); connect(button(QWizard::FinishButton), SIGNAL(clicked()), m_core, SIGNAL(finishButtonClicked())); @@ -511,8 +513,8 @@ void PackageManagerGui::wizardPageRemovalRequested(QWidget *widget) continue; removePage(pageId); d->m_defaultPages.remove(pageId); - packageManagerCore()->controlScriptEngine()->removeQObjectChildren(dynamicPage); - packageManagerCore()->componentScriptEngine()->removeQObjectChildren(dynamicPage); + packageManagerCore()->controlScriptEngine()->removeFromGlobalObject(dynamicPage); + packageManagerCore()->componentScriptEngine()->removeFromGlobalObject(dynamicPage); } } @@ -522,8 +524,8 @@ void PackageManagerGui::wizardWidgetInsertionRequested(QWidget *widget, Q_ASSERT(widget); if (QWizardPage *const p = QWizard::page(page)) { p->layout()->addWidget(widget); - packageManagerCore()->controlScriptEngine()->addQObjectChildren(p); - packageManagerCore()->componentScriptEngine()->addQObjectChildren(p); + packageManagerCore()->controlScriptEngine()->addToGlobalObject(p); + packageManagerCore()->componentScriptEngine()->addToGlobalObject(p); } } @@ -531,8 +533,8 @@ void PackageManagerGui::wizardWidgetRemovalRequested(QWidget *widget) { Q_ASSERT(widget); widget->setParent(0); - packageManagerCore()->controlScriptEngine()->removeQObjectChildren(widget); - packageManagerCore()->componentScriptEngine()->removeQObjectChildren(widget); + packageManagerCore()->controlScriptEngine()->removeFromGlobalObject(widget); + packageManagerCore()->componentScriptEngine()->removeFromGlobalObject(widget); } void PackageManagerGui::wizardPageVisibilityChangeRequested(bool visible, int p) @@ -698,26 +700,6 @@ void PackageManagerGui::setSettingsButtonEnabled(bool enabled) btn->setEnabled(enabled); } -/** - Returns the first descendant of \a parent that has \a objectName as name. - - This method is meant to be invoked from script. - */ -QObject *PackageManagerGui::findChild(QObject *parent, const QString &objectName) -{ - return parent->findChild<QObject*>(objectName); -} - -/** - Returns all descendants of \a parent that have \a objectName as name. - - This method is meant to be invoked from script. - */ -QList<QObject *> PackageManagerGui::findChildren(QObject *parent, const QString &objectName) -{ - return parent->findChildren<QObject*>(objectName); -} - void PackageManagerGui::customButtonClicked(int which) { if (QWizard::WizardButton(which) == QWizard::CustomButton1 && d->m_showSettingsButton) @@ -735,12 +717,29 @@ void PackageManagerGui::dependsOnLocalInstallerBinary() } } +void PackageManagerGui::currentPageChanged(int newId) +{ + executeControlScript(newId); + + PackageManagerPage *oldPage = qobject_cast<PackageManagerPage *>(page(d->m_currentId)); + if (oldPage) { + oldPage->leaving(); + emit oldPage->left(); + } + + d->m_currentId = newId; + + PackageManagerPage *newPage = qobject_cast<PackageManagerPage *>(page(d->m_currentId)); + if (newPage) { + newPage->entering(); + emit newPage->entered(); + } +} // -- PackageManagerPage PackageManagerPage::PackageManagerPage(PackageManagerCore *core) - : m_fresh(true) - , m_complete(true) + : m_complete(true) , m_needsSettingsButton(false) , m_core(core) , validatorComponent(0) @@ -840,31 +839,6 @@ QWidget *PackageManagerPage::findWidget(const QString &objectName) const return findChild<QWidget*> (objectName); } -/*! - \internal - - Used to support some kind of initializePage() in the case the wizard has been set - to QWizard::IndependentPages. If that option has been set, initializePage() would be only - called once. So we provide entering() and leaving() based on this reimplemented function. -*/ -void PackageManagerPage::setVisible(bool visible) -{ - QWizardPage::setVisible(visible); - if (m_fresh && !visible) { - // this is only hit once when the page gets added to the wizard - m_fresh = false; - return; - } - - if (visible) { - entering(); - emit entered(); - } else { - leaving(); - emit left(); - } -} - int PackageManagerPage::nextId() const { const int next = QWizardPage::nextId(); // the page to show next @@ -1488,12 +1462,30 @@ public: m_treeView->setModel(m_currentModel); m_treeView->setExpanded(m_currentModel->index(0, 0), true); + const bool installActionColumnVisible = false; + if (!installActionColumnVisible) + m_treeView->hideColumn(ComponentModelHelper::ActionColumn); + if (m_core->isInstaller()) { m_treeView->setHeaderHidden(true); - for (int i = 1; i < m_currentModel->columnCount(); ++i) + for (int i = ComponentModelHelper::InstalledVersionColumn; i < m_currentModel->columnCount(); ++i) m_treeView->hideColumn(i); + + if (installActionColumnVisible) { + m_treeView->header()->setStretchLastSection(false); + m_treeView->header()->setSectionResizeMode( + ComponentModelHelper::NameColumn, QHeaderView::Stretch); + m_treeView->header()->setSectionResizeMode( + ComponentModelHelper::ActionColumn, QHeaderView::ResizeToContents); + } } else { m_treeView->header()->setStretchLastSection(true); + if (installActionColumnVisible) { + m_treeView->header()->setSectionResizeMode( + ComponentModelHelper::NameColumn, QHeaderView::Interactive); + m_treeView->header()->setSectionResizeMode( + ComponentModelHelper::ActionColumn, QHeaderView::Interactive); + } for (int i = 0; i < m_currentModel->columnCount(); ++i) m_treeView->resizeColumnToContents(i); } @@ -1797,10 +1789,8 @@ bool TargetDirectoryPage::validatePage() void TargetDirectoryPage::entering() { - if (QPushButton *const b = qobject_cast<QPushButton *>(gui()->button(QWizard::NextButton))) { + if (QPushButton *const b = qobject_cast<QPushButton *>(gui()->button(QWizard::NextButton))) b->setDefault(true); - b->setFocus(); - } } void TargetDirectoryPage::leaving() @@ -2103,7 +2093,7 @@ void ReadyForInstallationPage::entering() quint64 repositorySize = 0; const bool createLocalRepository = packageManagerCore()->createLocalRepositoryFromBinary(); - if (createLocalRepository) { + if (createLocalRepository && packageManagerCore()->isInstaller()) { repositorySize = QFile(QCoreApplication::applicationFilePath()).size(); // if we create a local repository, take that space into account as well required += repositorySize; @@ -2394,10 +2384,8 @@ void FinishedPage::entering() } else { if (packageManagerCore()->isInstaller()) { m_commitButton = wizard()->button(QWizard::FinishButton); - if (QPushButton *const b = qobject_cast<QPushButton *>(m_commitButton)) { + if (QPushButton *const b = qobject_cast<QPushButton *>(m_commitButton)) b->setDefault(true); - b->setFocus(); - } } gui()->setOption(QWizard::NoCancelButton, true); |