summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleix Pol <aleixpol@kde.org>2015-11-03 15:54:27 (GMT)
committerAleix Pol <aleixpol@kde.org>2015-11-03 15:54:27 (GMT)
commita24e495c2eea95e76b1389bdffaf27e30d7e273a (patch)
tree690e10673ba0ba1af0ca90a59f49932b34d9318e
parentb19a6ad8ff4851a55070978c00f1aa91b4604e36 (diff)
Batch resource package id's
This way we make sure it stays consistent BUG: 354562
-rw-r--r--libmuon/backends/PackageKitBackend/PKTransaction.cpp16
-rw-r--r--libmuon/backends/PackageKitBackend/PackageKitResource.cpp5
-rw-r--r--libmuon/backends/PackageKitBackend/PackageKitResource.h4
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,