From e778ad5ccf76a830390db3d658abd1aeb75fafd3 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Mon, 29 Jul 2013 12:50:51 +0200 Subject: Fix broken model/component update due to wrong connected signals. - After 3eb3be the updater and the default model got the same components set once setRootComponents was emitted. The results was that both models would show all fetched components, not differentiating between updates and normal components. Change-Id: I053fdea73d42ca5ac1c2c26ebb063d9e7e415a13 Reviewed-by: Karsten Heimrich --- src/libs/installer/packagemanagercore.cpp | 31 +++++++++++------------------ src/libs/installer/packagemanagercore.h | 5 ++--- src/libs/installer/packagemanagercore_p.cpp | 2 +- 3 files changed, 15 insertions(+), 23 deletions(-) diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 99e3087e7..92f8ea26c 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -191,12 +191,6 @@ This is only useful for debugging purposes. */ -/*! - \qmlsignal QInstaller::setRootComponents(list components) - - Triggered with the list of new root components (for example after an online update). -*/ - /*! \qmlsignal QInstaller::startAllComponentsReset() @@ -206,9 +200,9 @@ */ /*! - \qmlsignal QInstaller::finishAllComponentsReset() + \qmlsignal QInstaller::finishAllComponentsReset(list rootComponents) - Triggered when the list of components has been updated. + Triggered when the list of new root components has been updated. \sa startAllComponentsReset */ @@ -220,9 +214,9 @@ */ /*! - \qmlsignal QInstaller::finishUpdaterComponentsReset() + \qmlsignal QInstaller::finishUpdaterComponentsReset(list componentsWithUpdates) - Triggered when components have been updated during a remote update. + Triggered when the list of available remote updates has been updated. */ /*! @@ -814,9 +808,8 @@ bool PackageManagerCore::fetchLocalPackagesTree() updateDisplayVersions(scDisplayVersion); - emit finishAllComponentsReset(); + emit finishAllComponentsReset(d->m_rootComponents); d->setStatus(Success); - emit setRootComponents(d->m_rootComponents); return true; } @@ -1315,6 +1308,8 @@ ComponentModel *PackageManagerCore::defaultComponentModel() const d->m_defaultModel = componentModel(const_cast (this), QLatin1String("AllComponentsModel")); } + connect(this, SIGNAL(finishAllComponentsReset(QList)), d->m_defaultModel, + SLOT(setRootComponents(QList))); return d->m_defaultModel; } @@ -1325,6 +1320,8 @@ ComponentModel *PackageManagerCore::updaterComponentModel() const d->m_updaterModel = componentModel(const_cast (this), QLatin1String("UpdaterComponentsModel")); } + connect(this, SIGNAL(finishUpdaterComponentsReset(QList)), d->m_updaterModel, + SLOT(setRootComponents(QList))); return d->m_updaterModel; } @@ -2133,8 +2130,7 @@ bool PackageManagerCore::fetchAllPackages(const PackagesList &remotes, const Loc if (!d->buildComponentTree(components, true)) return false; - emit finishAllComponentsReset(); - emit setRootComponents(d->m_rootComponents); + emit finishAllComponentsReset(d->m_rootComponents); return true; } @@ -2275,7 +2271,7 @@ bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const } } catch (const Error &error) { d->clearUpdaterComponentLists(); - emit finishUpdaterComponentsReset(); + emit finishUpdaterComponentsReset(QList()); d->setStatus(Failure, error.message()); // TODO: make sure we remove all message boxes inside the library at some point. @@ -2284,8 +2280,7 @@ bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const return false; } - emit finishUpdaterComponentsReset(); - emit setRootComponents(d->m_updaterComponents); + emit finishUpdaterComponentsReset(d->m_updaterComponents); return true; } @@ -2349,8 +2344,6 @@ ComponentModel *PackageManagerCore::componentModel(PackageManagerCore *core, con ComponentModel::tr("New Version")); model->setHeaderData(ComponentModelHelper::UncompressedSizeColumn, Qt::Horizontal, ComponentModel::tr("Size")); - connect(this, SIGNAL(setRootComponents(QList)), model, - SLOT(setRootComponents(QList))); connect(model, SIGNAL(checkStateChanged(QInstaller::ComponentModel::ModelState)), this, SLOT(componentsToInstallNeedsRecalculation())); diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h index 712a5174c..218d9f6a9 100644 --- a/src/libs/installer/packagemanagercore.h +++ b/src/libs/installer/packagemanagercore.h @@ -271,13 +271,12 @@ Q_SIGNALS: void finishButtonClicked(); void metaJobInfoMessage(const QString &message); - void setRootComponents(const QList &components); void startAllComponentsReset(); - void finishAllComponentsReset(); + void finishAllComponentsReset(const QList &rootComponents); void startUpdaterComponentsReset(); - void finishUpdaterComponentsReset(); + void finishUpdaterComponentsReset(const QList &componentsWithUpdates); void installationStarted(); void installationInterrupted(); diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 4f11412d0..40ddf1c3a 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -380,7 +380,7 @@ bool PackageManagerCorePrivate::buildComponentTree(QHash &c std::sort(m_rootComponents.begin(), m_rootComponents.end(), Component::SortingPriorityGreaterThan()); } catch (const Error &error) { clearAllComponentLists(); - emit m_core->finishAllComponentsReset(); + emit m_core->finishAllComponentsReset(QList()); setStatus(PackageManagerCore::Failure, error.message()); // TODO: make sure we remove all message boxes inside the library at some point. -- cgit v1.2.3