diff options
| author | Aleix Pol <aleixpol@kde.org> | 2015-11-03 15:54:27 (GMT) |
|---|---|---|
| committer | Aleix Pol <aleixpol@kde.org> | 2015-11-03 15:54:27 (GMT) |
| commit | a24e495c2eea95e76b1389bdffaf27e30d7e273a (patch) | |
| tree | 690e10673ba0ba1af0ca90a59f49932b34d9318e | |
| parent | b19a6ad8ff4851a55070978c00f1aa91b4604e36 (diff) | |
Batch resource package id's
This way we make sure it stays consistent
BUG: 354562
3 files changed, 18 insertions, 7 deletions
diff --git a/libmuon/backends/PackageKitBackend/PKTransaction.cpp b/libmuon/backends/PackageKitBackend/PKTransaction.cpp index e693966..c06c999 100644 --- a/libmuon/backends/PackageKitBackend/PKTransaction.cpp +++ b/libmuon/backends/PackageKitBackend/PKTransaction.cpp @@ -97,17 +97,25 @@ void PKTransaction::cleanup(PackageKit::Transaction::Exit exit, uint runtime) if (exit == PackageKit::Transaction::ExitEulaRequired) return; - setStatus(Transaction::DoneStatus); if (exit == PackageKit::Transaction::ExitCancelled) { deleteLater(); } else { disconnect(m_trans, nullptr, this, nullptr); m_trans = nullptr; - qobject_cast<PackageKitBackend*>(resource()->backend())->removeTransaction(this); } PackageKit::Transaction* t = PackageKit::Daemon::resolve(resource()->packageName(), PackageKit::Transaction::FilterArch | PackageKit::Transaction::FilterLast); - qobject_cast<PackageKitResource*>(resource())->resetPackageIds(); - connect(t, SIGNAL(package(PackageKit::Transaction::Info,QString,QString)), resource(), SLOT(addPackageId(PackageKit::Transaction::Info, QString,QString))); + connect(t, &PackageKit::Transaction::package, t, [t](PackageKit::Transaction::Info info, const QString& packageId) { + QMap<PackageKit::Transaction::Info, QStringList> packages = t->property("packages").value<QMap<PackageKit::Transaction::Info, QStringList>>(); + packages[info].append(packageId); + t->setProperty("packages", qVariantFromValue(packages)); + }); + + connect(t, &PackageKit::Transaction::finished, t, [t, this](PackageKit::Transaction::Exit status, uint runtime){ + QMap<PackageKit::Transaction::Info, QStringList> packages = t->property("packages").value<QMap<PackageKit::Transaction::Info, QStringList>>(); + qobject_cast<PackageKitResource*>(resource())->setPackages(packages); + setStatus(Transaction::DoneStatus); + qobject_cast<PackageKitBackend*>(resource()->backend())->removeTransaction(this); + }); } PackageKit::Transaction* PKTransaction::transaction() diff --git a/libmuon/backends/PackageKitBackend/PackageKitResource.cpp b/libmuon/backends/PackageKitBackend/PackageKitResource.cpp index 984bf24..0840dca 100644 --- a/libmuon/backends/PackageKitBackend/PackageKitResource.cpp +++ b/libmuon/backends/PackageKitBackend/PackageKitResource.cpp @@ -150,9 +150,10 @@ AbstractResource::State PackageKitResource::state() return Broken; } -void PackageKitResource::resetPackageIds() +void PackageKitResource::setPackages(const QMap<PackageKit::Transaction::Info, QStringList> &packages) { - m_packages.clear(); + m_packages = packages; + emit stateChanged(); } void PackageKitResource::addPackageId(PackageKit::Transaction::Info info, const QString &packageId, const QString &/*summary*/) diff --git a/libmuon/backends/PackageKitBackend/PackageKitResource.h b/libmuon/backends/PackageKitBackend/PackageKitResource.h index 08211e8..7b98ca2 100644 --- a/libmuon/backends/PackageKitBackend/PackageKitResource.h +++ b/libmuon/backends/PackageKitBackend/PackageKitResource.h @@ -58,10 +58,12 @@ class PackageKitResource : public AbstractResource QString installedPackageId() const; QString availablePackageId() const; + QMap<PackageKit::Transaction::Info, QStringList> packages() const { return m_packages; } + void setPackages(const QMap<PackageKit::Transaction::Info, QStringList> &packages); + public slots: void addPackageId(PackageKit::Transaction::Info info, const QString &packageId, const QString &summary); void setDetails(const PackageKit::Details& details); - void resetPackageIds(); private slots: void updateDetail(const QString &packageID, |
