[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [discover/Plasma/5.12] libdiscover/backends/PackageKitBackend: Improve how progress is processed whe
From: Aleix Pol <null () kde ! org>
Date: 2018-06-21 17:13:50
Message-ID: E1fW39a-00017R-G0 () code ! kde ! org
[Download RAW message or body]
Git commit bc71b6874dd9c42af03a42cd9ead38d8f918e7c0 by Aleix Pol.
Committed on 21/06/2018 at 17:12.
Pushed by apol into branch 'Plasma/5.12'.
Improve how progress is processed when installing one application
BUG: 391058
M +18 -10 libdiscover/backends/PackageKitBackend/PKTransaction.cpp
M +2 -1 libdiscover/backends/PackageKitBackend/PKTransaction.h
M +4 -2 libdiscover/backends/PackageKitBackend/PackageKitUpdater.cpp
https://commits.kde.org/discover/bc71b6874dd9c42af03a42cd9ead38d8f918e7c0
diff --git a/libdiscover/backends/PackageKitBackend/PKTransaction.cpp \
b/libdiscover/backends/PackageKitBackend/PKTransaction.cpp index a8d2036e..22066789 \
100644
--- a/libdiscover/backends/PackageKitBackend/PKTransaction.cpp
+++ b/libdiscover/backends/PackageKitBackend/PKTransaction.cpp
@@ -93,25 +93,33 @@ void \
PKTransaction::trigger(PackageKit::Transaction::TransactionFlags \
flags)
connect(m_trans.data(), &PackageKit::Transaction::mediaChangeRequired, this, \
&PKTransaction::mediaChange);
connect(m_trans.data(), &PackageKit::Transaction::requireRestart, this, \
&PKTransaction::requireRestart);
connect(m_trans.data(), &PackageKit::Transaction::repoSignatureRequired, this, \
&PKTransaction::repoSignatureRequired);
- connect(m_trans.data(), &PackageKit::Transaction::itemProgress, this, \
&PKTransaction::progressChanged); + connect(m_trans.data(), \
&PackageKit::Transaction::percentageChanged, this, &PKTransaction::progressChanged); \
+ connect(m_trans.data(), &PackageKit::Transaction::statusChanged, this, \
&PKTransaction::statusChanged);
connect(m_trans.data(), &PackageKit::Transaction::eulaRequired, this, \
&PKTransaction::eulaRequired);
connect(m_trans.data(), &PackageKit::Transaction::allowCancelChanged, this, \
&PKTransaction::cancellableChanged);
setCancellable(m_trans->allowCancel());
}
-void PKTransaction::progressChanged(const QString &id, \
PackageKit::Transaction::Status status, uint percentage) +void \
PKTransaction::statusChanged() {
- PackageKitResource * res = qobject_cast<PackageKitResource*>(resource());
- if (!res->allPackageNames().contains(PackageKit::Daemon::packageName(id)))
- return;
+ setStatus(m_trans->status() == PackageKit::Transaction::StatusDownload ? \
Transaction::DownloadingStatus : Transaction::CommittingStatus); + \
progressChanged(); +}
- setProgress(percentage);
+int percentageWithStatus(PackageKit::Transaction::Status status, uint percentage);
- if (status == PackageKit::Transaction::StatusDownload)
- setStatus(Transaction::DownloadingStatus);
- else
- setStatus(Transaction::CommittingStatus);
+void PKTransaction::progressChanged()
+{
+ auto percent = m_trans->percentage();
+ if (percent == 101) {
+ qWarning() << "percentage cannot be calculated";
+ percent = 50;
+ }
+
+ const auto processedPercentage = percentageWithStatus(m_trans->status(), \
qBound<int>(0, percent, 100)); + if (processedPercentage >= 0)
+ setProgress(processedPercentage);
}
void PKTransaction::cancellableChanged()
diff --git a/libdiscover/backends/PackageKitBackend/PKTransaction.h \
b/libdiscover/backends/PackageKitBackend/PKTransaction.h index f2f44e0f..e3b41898 \
100644
--- a/libdiscover/backends/PackageKitBackend/PKTransaction.h
+++ b/libdiscover/backends/PackageKitBackend/PKTransaction.h
@@ -41,12 +41,13 @@ class PKTransaction : public Transaction
private:
void processProceedFunction();
+ void statusChanged();
void cleanup(PackageKit::Transaction::Exit, uint);
void errorFound(PackageKit::Transaction::Error err, const QString& error);
void mediaChange(PackageKit::Transaction::MediaType media, const QString& \
type, const QString& text);
void requireRestart(PackageKit::Transaction::Restart restart, const QString& \
p);
- void progressChanged(const QString&, PackageKit::Transaction::Status, uint);
+ void progressChanged();
void eulaRequired(const QString &eulaID, const QString &packageID, const \
QString &vendor, const QString &licenseAgreement); void cancellableChanged();
void packageResolved(PackageKit::Transaction::Info info, const QString& \
packageId);
diff --git a/libdiscover/backends/PackageKitBackend/PackageKitUpdater.cpp \
b/libdiscover/backends/PackageKitBackend/PackageKitUpdater.cpp index \
c055a573..e9e38c60 100644
--- a/libdiscover/backends/PackageKitBackend/PackageKitUpdater.cpp
+++ b/libdiscover/backends/PackageKitBackend/PackageKitUpdater.cpp
@@ -30,12 +30,14 @@
#include <KLocalizedString>
-static int percentageWithStatus(PackageKit::Transaction::Status status, uint \
percentage) +int percentageWithStatus(PackageKit::Transaction::Status status, uint \
percentage) {
+ const auto was = percentage;
if (status != PackageKit::Transaction::StatusUnknown) {
static const QMap<PackageKit::Transaction::Status, int> statuses = {
{ PackageKit::Transaction::Status::StatusDownload, 0 },
{ PackageKit::Transaction::Status::StatusInstall, 1},
+ { PackageKit::Transaction::Status::StatusRemove, 1},
{ PackageKit::Transaction::Status::StatusUpdate, 1}
};
const auto idx = statuses.value(status, -1);
@@ -45,7 +47,7 @@ static int percentageWithStatus(PackageKit::Transaction::Status \
status, uint per }
percentage = (idx * 100 + percentage) / 2 /*the maximum in statuses*/;
}
- qDebug() << "reporing progress with status:" << status << percentage;
+ qDebug() << "reporting progress with status:" << status << percentage << was;
return percentage;
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic