[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