File 0007-Port-away-from-KDELibs4Support-use-Solid-Power-inter.patch of Package plasma5-pk-updates

From 6759661e86fd31f963a9225de728e36ad5a159be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
Date: Fri, 21 Jun 2019 01:08:28 +0200
Subject: [PATCH 7/7] Port away from KDELibs4Support, use Solid::Power
 interface

Summary:
The Solid::Power implementation does not track the state itself (to
avoid querying the initial state even when it is not used), so track
the state inside PkUpdates and query the initial state from the interface
asynchronously.

Test Plan:
The initial state is printed correctly in the debug output, same for
change notifications.

Depends on D21975

Reviewers: lukas, jgrulich

Differential Revision: https://phabricator.kde.org/D21976
---
 CMakeLists.txt                 |  2 +-
 src/declarative/CMakeLists.txt |  4 ++--
 src/declarative/pkupdates.cpp  | 29 ++++++++++++++++++++++-------
 src/declarative/pkupdates.h    |  1 +
 4 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index d2dd2cb..48c4013 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,7 +26,7 @@ find_package(KF5 REQUIRED
     I18n
     CoreAddons # KFormat
     Notifications
-    KDELibs4Support #Solid::Power
+    Solid # Solid::Power
 )
 
 find_package(packagekitqt5 REQUIRED)
diff --git a/src/declarative/CMakeLists.txt b/src/declarative/CMakeLists.txt
index bdeb5b1..183a8d0 100644
--- a/src/declarative/CMakeLists.txt
+++ b/src/declarative/CMakeLists.txt
@@ -16,7 +16,7 @@ target_link_libraries(plasmapk_qmlplugins
     KF5::CoreAddons
     KF5::Notifications
     KF5::ConfigCore
-    KF5::KDELibs4Support
+    KF5::Solid
     PK::packagekitqt5
 )
 
@@ -38,7 +38,7 @@ target_link_libraries(plasmapk-console
     KF5::I18n
     KF5::CoreAddons
     KF5::ConfigCore
-    KF5::KDELibs4Support
+    KF5::Solid
     KF5::Notifications
     PK::packagekitqt5
 )
diff --git a/src/declarative/pkupdates.cpp b/src/declarative/pkupdates.cpp
index e2aa79a..c60016f 100644
--- a/src/declarative/pkupdates.cpp
+++ b/src/declarative/pkupdates.cpp
@@ -27,7 +27,8 @@
 #include <KLocalizedString>
 #include <KFormat>
 #include <KNotification>
-#include <Solid/PowerManagement>
+#include <Solid/Power>
+#include <Solid/AcPluggedJob>
 #include <KConfigGroup>
 #include <KSharedConfig>
 
@@ -47,18 +48,32 @@ namespace
 } // namespace {
 
 PkUpdates::PkUpdates(QObject *parent) :
-    QObject(parent)
+    QObject(parent),
+    m_isOnBattery(true)
 {
     setStatusMessage(i18n("Idle"));
 
     connect(PackageKit::Daemon::global(), &PackageKit::Daemon::changed, this, &PkUpdates::onChanged);
     connect(PackageKit::Daemon::global(), &PackageKit::Daemon::updatesChanged, this, &PkUpdates::onUpdatesChanged);
     connect(PackageKit::Daemon::global(), &PackageKit::Daemon::networkStateChanged, this, &PkUpdates::networkStateChanged);
-    connect(Solid::PowerManagement::notifier(), &Solid::PowerManagement::Notifier::resumingFromSuspend, this,
+    connect(Solid::Power::self(), &Solid::Power::resumeFromSuspend, this,
             [this] {PackageKit::Daemon::stateHasChanged(QStringLiteral("resume"));});
 
-    connect(Solid::PowerManagement::notifier(), &Solid::PowerManagement::Notifier::appShouldConserveResourcesChanged,
-            this, &PkUpdates::isOnBatteryChanged);
+    connect(Solid::Power::self(), &Solid::Power::acPluggedChanged, this, [this] (bool acPlugged) {
+            qCDebug(PLASMA_PK_UPDATES) << "acPluggedChanged onBattery:" << m_isOnBattery << "->" << !acPlugged;
+            if (!acPlugged != m_isOnBattery) {
+                m_isOnBattery = !acPlugged;
+                emit PkUpdates::isOnBatteryChanged();
+            }
+    });
+    auto acPluggedJob = Solid::Power::self()->isAcPlugged(this);
+    connect(acPluggedJob , &Solid::Job::result, this, [this] (Solid::Job* job) {
+        bool acPlugged = static_cast<Solid::AcPluggedJob*>(job)->isPlugged();
+        qCDebug(PLASMA_PK_UPDATES) << "acPlugged initial state" << acPlugged;
+        m_isOnBattery = !acPlugged;
+        emit PkUpdates::isOnBatteryChanged();
+    });
+    acPluggedJob->start();
 
     connect(PackageKit::Daemon::global(), &PackageKit::Daemon::networkStateChanged, this, &PkUpdates::doDelayedCheckUpdates);
     connect(this, &PkUpdates::isActiveChanged, this, &PkUpdates::messageChanged);
@@ -194,8 +209,8 @@ bool PkUpdates::isNetworkMobile() const
 
 bool PkUpdates::isOnBattery() const
 {
-    qCDebug(PLASMA_PK_UPDATES) << "Is on battery:" << Solid::PowerManagement::appShouldConserveResources();
-    return Solid::PowerManagement::appShouldConserveResources();
+    qCDebug(PLASMA_PK_UPDATES) << "Is on battery:" << m_isOnBattery;
+    return m_isOnBattery;
 }
 
 void PkUpdates::getUpdateDetails(const QString &pkgID)
diff --git a/src/declarative/pkupdates.h b/src/declarative/pkupdates.h
index ef02cc9..e9d083e 100644
--- a/src/declarative/pkupdates.h
+++ b/src/declarative/pkupdates.h
@@ -240,6 +240,7 @@ private:
     Activity m_activity = Idle;
     bool m_lastCheckSuccessful = false;
     bool m_checkUpdatesWhenNetworkOnline = false;
+    bool m_isOnBattery;
 };
 
 #endif // PLASMA_PK_UPDATES_H
-- 
2.21.0
openSUSE Build Service is sponsored by