[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kcm-grub2/frameworks] /: Port QPkBackend to PackageKitQt5
From:       Alexander Volkov <null () kde ! org>
Date:       2018-05-11 16:44:08
Message-ID: E1fHB9M-00065t-P2 () code ! kde ! org
[Download RAW message or body]

Git commit 86b4daef2d5c71971bf3c0a6c1943e3fb98b13e7 by Alexander Volkov.
Committed on 11/05/2018 at 19:24.
Pushed by volkov into branch 'frameworks'.

Port QPkBackend to PackageKitQt5

M  +3    -3    CMakeLists.txt
D  +0    -40   cmake/modules/FindQPackageKit.cmake
M  +1    -3    src/CMakeLists.txt
M  +67   -78   src/qPkBackend.cpp
M  +7    -7    src/qPkBackend.h
M  +6    -2    src/removeDlg.cpp
M  +8    -4    src/removeDlg.h

https://commits.kde.org/kcm-grub2/86b4daef2d5c71971bf3c0a6c1943e3fb98b13e7

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3922ba8..e3060d1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -68,12 +68,12 @@ else()
     set(HAVE_QAPT 0)
 endif()
 
-find_package(QPackageKit)
-set_package_properties(QPackageKit PROPERTIES
+find_package(PackageKitQt5)
+set_package_properties(PackageKitQt5 PROPERTIES
                        DESCRIPTION "Remove unneeded old entries (qpackagekit \
backend)"  URL "http://www.packagekit.org/"
                        TYPE OPTIONAL)
-if(QPACKAGEKIT_FOUND)
+if(PackageKitQt5_FOUND)
     set(HAVE_QPACKAGEKIT 1)
 else()
     set(HAVE_QPACKAGEKIT 0)
diff --git a/cmake/modules/FindQPackageKit.cmake \
b/cmake/modules/FindQPackageKit.cmake deleted file mode 100644
index 5efc79a..0000000
--- a/cmake/modules/FindQPackageKit.cmake
+++ /dev/null
@@ -1,40 +0,0 @@
-# - Try to find QPackageKit
-# Once done this will define
-#
-#  QPACKAGEKIT_FOUND - system has QPackageKit
-#  QPACKAGEKIT_INCLUDE_DIR - the QPackageKit include directory
-#  QPACKAGEKIT_LIB - Link these to use QPackageKit
-#  QPACKAGEKIT_DEFINITIONS - Compiler switches required for using QPackageKit
-
-# Copyright (c) 2008, Adrien Bustany, <madcat@mymadcat.com>
-#
-# Redistribution and use is allowed according to the terms of the GPLv2+ license.
-
-IF (QPACKAGEKIT_INCLUDE_DIR AND QPACKAGEKIT_LIB)
-    SET(QPACKAGEKIT_FIND_QUIETLY TRUE)
-ENDIF (QPACKAGEKIT_INCLUDE_DIR AND QPACKAGEKIT_LIB)
-
-FIND_PATH( QPACKAGEKIT_INCLUDE_DIR PackageKit/packagekit-qt/QPackageKit )
-
-FIND_LIBRARY( QPACKAGEKIT_LIB NAMES packagekit-qt )
-
-IF (QPACKAGEKIT_INCLUDE_DIR AND QPACKAGEKIT_LIB)
-   SET(QPACKAGEKIT_FOUND TRUE)
-ELSE (QPACKAGEKIT_INCLUDE_DIR AND QPACKAGEKIT_LIB)
-   SET(QPACKAGEKIT_FOUND FALSE)
-ENDIF (QPACKAGEKIT_INCLUDE_DIR AND QPACKAGEKIT_LIB)
-
-SET(QPACKAGEKIT_INCLUDE_DIR ${QPACKAGEKIT_INCLUDE_DIR}/PackageKit/packagekit-qt)
-
-IF (QPACKAGEKIT_FOUND)
-  IF (NOT QPACKAGEKIT_FIND_QUIETLY)
-    MESSAGE(STATUS "Found QPackageKit: ${QPACKAGEKIT_LIB}")
-  ENDIF (NOT QPACKAGEKIT_FIND_QUIETLY)
-ELSE (QPACKAGEKIT_FOUND)
-  IF (QPACKAGEKIT_FIND_REQUIRED)
-    MESSAGE(FATAL_ERROR "Could NOT find QPackageKit")
-  ENDIF (QPACKAGEKIT_FIND_REQUIRED)
-ENDIF (QPACKAGEKIT_FOUND)
-
-MARK_AS_ADVANCED(QPACKAGEKIT_INCLUDE_DIR QPACKAGEKIT_LIB)
-
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index eb9ff25..bc19f57 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,8 +6,6 @@ if(HAVE_IMAGEMAGICK)
 endif(HAVE_IMAGEMAGICK)
 if(HAVE_QAPT)
     set(kcm_grub2_INCLUDE_DIRS ${kcm_grub2_INCLUDE_DIRS} ${QAPT_INCLUDE_DIR})
-elseif(HAVE_QPACKAGEKIT)
-    set(kcm_grub2_INCLUDE_DIRS ${kcm_grub2_INCLUDE_DIRS} ${QPACKAGEKIT_INCLUDE_DIR})
 endif(HAVE_QAPT)
 
 # Set Sources
@@ -38,7 +36,7 @@ endif(HAVE_IMAGEMAGICK)
 if(HAVE_QAPT)
     set(kcm_grub2_LINK_LIBS ${kcm_grub2_LINK_LIBS} ${QAPT_LIBRARY})
 elseif(HAVE_QPACKAGEKIT)
-    set(kcm_grub2_LINK_LIBS ${kcm_grub2_LINK_LIBS} ${QPACKAGEKIT_LIB})
+    set(kcm_grub2_LINK_LIBS ${kcm_grub2_LINK_LIBS} ${PackageKitQt5_LIBRARIES})
 endif(HAVE_QAPT)
 
 # Definitions
diff --git a/src/qPkBackend.cpp b/src/qPkBackend.cpp
index 8d4bc8a..5f8f7ae 100644
--- a/src/qPkBackend.cpp
+++ b/src/qPkBackend.cpp
@@ -18,123 +18,122 @@
 //Own
 #include "qPkBackend.h"
 
+//Qt
+#include <QEventLoop>
+
 //KDE
 #include <KLocalizedString>
 
+//PackageKit
+#include <PackageKit/Daemon>
+
 //Taken from KDE playground/sysadmin/apper "as is"
-static QString statusToString(PackageKit::Enum::Status status)
+static QString statusToString(PackageKit::Transaction::Status status)
 {
     switch (status) {
-    case PackageKit::Enum::LastStatus:
-    case PackageKit::Enum::UnknownStatus:
-        return i18nc("This is when the transaction status is not known",
-                     "Unknown state");
-    case PackageKit::Enum::StatusSetup:
+    case PackageKit::Transaction::StatusSetup:
         return i18nc("transaction state, the daemon is in the process of starting",
                      "Waiting for service to start");
-    case PackageKit::Enum::StatusWait:
+    case PackageKit::Transaction::StatusWait:
         return i18nc("transaction state, the transaction is waiting for another to \
complete",  "Waiting for other tasks");
-    case PackageKit::Enum::StatusRunning:
+    case PackageKit::Transaction::StatusRunning:
         return i18nc("transaction state, just started",
                      "Running task");
-    case PackageKit::Enum::StatusQuery:
+    case PackageKit::Transaction::StatusQuery:
         return i18nc("transaction state, is querying data",
                      "Querying");
-    case PackageKit::Enum::StatusInfo:
+    case PackageKit::Transaction::StatusInfo:
         return i18nc("transaction state, getting data from a server",
                      "Getting information");
-    case PackageKit::Enum::StatusRemove:
+    case PackageKit::Transaction::StatusRemove:
         return i18nc("transaction state, removing packages",
                      "Removing packages");
-    case PackageKit::Enum::StatusDownload:
+    case PackageKit::Transaction::StatusDownload:
         return i18nc("transaction state, downloading package files",
                      "Downloading packages");
-    case PackageKit::Enum::StatusInstall:
+    case PackageKit::Transaction::StatusInstall:
         return i18nc("transaction state, installing packages",
                      "Installing packages");
-    case PackageKit::Enum::StatusRefreshCache:
+    case PackageKit::Transaction::StatusRefreshCache:
         return i18nc("transaction state, refreshing internal lists",
                      "Refreshing software list");
-    case PackageKit::Enum::StatusUpdate:
+    case PackageKit::Transaction::StatusUpdate:
         return i18nc("transaction state, installing updates",
                      "Updating packages");
-    case PackageKit::Enum::StatusCleanup:
+    case PackageKit::Transaction::StatusCleanup:
         return i18nc("transaction state, removing old packages, and cleaning config \
files",  "Cleaning up packages");
-    case PackageKit::Enum::StatusObsolete:
+    case PackageKit::Transaction::StatusObsolete:
         return i18nc("transaction state, obsoleting old packages",
                      "Obsoleting packages");
-    case PackageKit::Enum::StatusDepResolve:
+    case PackageKit::Transaction::StatusDepResolve:
         return i18nc("transaction state, checking the transaction before we do it",
                      "Resolving dependencies");
-    case PackageKit::Enum::StatusSigCheck:
+    case PackageKit::Transaction::StatusSigCheck:
         return i18nc("transaction state, checking if we have all the security keys \
for the operation",  "Checking signatures");
-    case PackageKit::Enum::StatusRollback:
-        return i18nc("transaction state, when we return to a previous system state",
-                     "Rolling back");
-    case PackageKit::Enum::StatusTestCommit:
+    case PackageKit::Transaction::StatusTestCommit:
         return i18nc("transaction state, when we're doing a test transaction",
                      "Testing changes");
-    case PackageKit::Enum::StatusCommit:
+    case PackageKit::Transaction::StatusCommit:
         return i18nc("transaction state, when we're writing to the system package \
database",  "Committing changes");
-    case PackageKit::Enum::StatusRequest:
+    case PackageKit::Transaction::StatusRequest:
         return i18nc("transaction state, requesting data from a server",
                      "Requesting data");
-    case PackageKit::Enum::StatusFinished:
+    case PackageKit::Transaction::StatusFinished:
         return i18nc("transaction state, all done!",
                      "Finished");
-    case PackageKit::Enum::StatusCancel:
+    case PackageKit::Transaction::StatusCancel:
         return i18nc("transaction state, in the process of cancelling",
                      "Cancelling");
-    case PackageKit::Enum::StatusDownloadRepository:
+    case PackageKit::Transaction::StatusDownloadRepository:
         return i18nc("transaction state, downloading metadata",
                      "Downloading repository information");
-    case PackageKit::Enum::StatusDownloadPackagelist:
+    case PackageKit::Transaction::StatusDownloadPackagelist:
         return i18nc("transaction state, downloading metadata",
                      "Downloading list of packages");
-    case PackageKit::Enum::StatusDownloadFilelist:
+    case PackageKit::Transaction::StatusDownloadFilelist:
         return i18nc("transaction state, downloading metadata",
                      "Downloading file lists");
-    case PackageKit::Enum::StatusDownloadChangelog:
+    case PackageKit::Transaction::StatusDownloadChangelog:
         return i18nc("transaction state, downloading metadata",
                      "Downloading lists of changes");
-    case PackageKit::Enum::StatusDownloadGroup:
+    case PackageKit::Transaction::StatusDownloadGroup:
         return i18nc("transaction state, downloading metadata",
                      "Downloading groups");
-    case PackageKit::Enum::StatusDownloadUpdateinfo:
+    case PackageKit::Transaction::StatusDownloadUpdateinfo:
         return i18nc("transaction state, downloading metadata",
                      "Downloading update information");
-    case PackageKit::Enum::StatusRepackaging:
+    case PackageKit::Transaction::StatusRepackaging:
         return i18nc("transaction state, repackaging delta files",
                      "Repackaging files");
-    case PackageKit::Enum::StatusLoadingCache:
+    case PackageKit::Transaction::StatusLoadingCache:
         return i18nc("transaction state, loading databases",
                      "Loading cache");
-    case PackageKit::Enum::StatusScanApplications:
+    case PackageKit::Transaction::StatusScanApplications:
         return i18nc("transaction state, scanning for running processes",
                      "Scanning installed applications");
-    case PackageKit::Enum::StatusGeneratePackageList:
+    case PackageKit::Transaction::StatusGeneratePackageList:
         return i18nc("transaction state, generating a list of packages installed on \
the system",  "Generating package lists");
-    case PackageKit::Enum::StatusWaitingForLock:
+    case PackageKit::Transaction::StatusWaitingForLock:
         return i18nc("transaction state, when we're waiting for the native tools to \
exit",  "Waiting for package manager lock");
-    case PackageKit::Enum::StatusWaitingForAuth:
+    case PackageKit::Transaction::StatusWaitingForAuth:
         return i18nc("waiting for user to type in a password",
                      "Waiting for authentication");
-    case PackageKit::Enum::StatusScanProcessList:
+    case PackageKit::Transaction::StatusScanProcessList:
         return i18nc("we are updating the list of processes",
                      "Updating the list of running applications");
-    case PackageKit::Enum::StatusCheckExecutableFiles:
+    case PackageKit::Transaction::StatusCheckExecutableFiles:
         return i18nc("we are checking executable files in use",
                      "Checking for applications currently in use");
-    case PackageKit::Enum::StatusCheckLibraries:
+    case PackageKit::Transaction::StatusCheckLibraries:
         return i18nc("we are checking for libraries in use",
                      "Checking for libraries currently in use");
-    case PackageKit::Enum::StatusCopyFiles:
+    case PackageKit::Transaction::StatusCopyFiles:
         return i18nc("we are copying package files to prepare to install",
                      "Copying files");
     }
@@ -151,24 +150,21 @@ QPkBackend::~QPkBackend()
 
 QStringList QPkBackend::ownerPackage(const QString &fileName)
 {
-    PackageKit::Transaction t(QString(), this);
-    if (t.error() != PackageKit::Client::NoError) {
-        return QStringList();
-    }
-    m_package.clear();
+    auto *t = PackageKit::Daemon::searchFiles(fileName);
+    m_packageId.clear();
     QEventLoop loop;
-    connect(&t, SIGNAL(finished(PackageKit::Enum::Exit,uint)), &loop, SLOT(quit()));
-    connect(&t, SIGNAL(finished(PackageKit::Enum::Exit,uint)), this, \
                SLOT(slotFinished(PackageKit::Enum::Exit,uint)));
-    connect(&t, SIGNAL(package(QSharedPointer<PackageKit::Package>)), this, \
                SLOT(slotPackage(QSharedPointer<PackageKit::Package>)));
-    t.searchFiles(fileName);
+    connect(t, &PackageKit::Transaction::finished, &loop, &QEventLoop::quit);
+    connect(t, &PackageKit::Transaction::finished, this, &QPkBackend::slotFinished);
+    connect(t, &PackageKit::Transaction::package, this, &QPkBackend::slotPackage);
     loop.exec();
-    return m_status == PackageKit::Enum::ExitSuccess && !m_package.isNull() ? \
QStringList() << m_package->name() << m_package->version() : QStringList(); +    \
return m_status == PackageKit::Transaction::ExitSuccess && !m_packageId.isNull() ? +  \
QStringList() << PackageKit::Transaction::packageName(m_packageId) << \
PackageKit::Transaction::packageVersion(m_packageId) : QStringList();  }
 void QPkBackend::markForRemoval(const QString &packageName)
 {
     if (!m_remove.contains(packageName) && packageExists(packageName)) {
-        m_remove.append(m_package->name());
-        m_removePtrs.append(m_package);
+        m_remove.append(PackageKit::Transaction::packageName(m_packageId));
+        m_removeIds.append(m_packageId);
     }
 }
 QStringList QPkBackend::markedForRemoval() const
@@ -177,31 +173,28 @@ QStringList QPkBackend::markedForRemoval() const
 }
 void QPkBackend::removePackages()
 {
-    m_t = new PackageKit::Transaction(QString(), this);
-    if (m_t->error() != PackageKit::Client::NoError) {
-        return;
-    }
-    connect(m_t, SIGNAL(changed()), this, SLOT(slotUpdateProgress()));
-    connect(m_t, SIGNAL(finished(PackageKit::Enum::Exit,uint)), this, \
                SLOT(slotFinished(PackageKit::Enum::Exit,uint)));
-    m_t->removePackages(m_removePtrs, false, true);
+    m_t = PackageKit::Daemon::removePackages(m_removeIds, false, true);
+    connect(m_t, &PackageKit::Transaction::percentageChanged, this, \
&QPkBackend::slotUpdateProgress); +    connect(m_t, \
&PackageKit::Transaction::statusChanged, this, &QPkBackend::slotUpdateProgress); +    \
connect(m_t, &PackageKit::Transaction::finished, this, &QPkBackend::slotFinished);  }
 void QPkBackend::undoChanges()
 {
     m_remove.clear();
-    m_removePtrs.clear();
+    m_removeIds.clear();
 }
 
-void QPkBackend::slotFinished(PackageKit::Enum::Exit status, uint runtime)
+void QPkBackend::slotFinished(PackageKit::Transaction::Exit status, uint runtime)
 {
     Q_UNUSED(runtime)
     m_status = status;
-    if (m_t && m_t->role() == PackageKit::Enum::RoleRemovePackages) {
-        Q_EMIT finished(m_status == PackageKit::Enum::ExitSuccess);
+    if (m_t && m_t->role() == PackageKit::Transaction::RoleRemovePackages) {
+        Q_EMIT finished(m_status == PackageKit::Transaction::ExitSuccess);
     }
 }
-void QPkBackend::slotPackage(const QSharedPointer<PackageKit::Package> &package)
+void QPkBackend::slotPackage(PackageKit::Transaction::Info, const QString \
&packageId, const QString &)  {
-    m_package = package;
+    m_packageId = packageId;
 }
 void QPkBackend::slotUpdateProgress()
 {
@@ -210,16 +203,12 @@ void QPkBackend::slotUpdateProgress()
 
 bool QPkBackend::packageExists(const QString &packageName)
 {
-    PackageKit::Transaction t(QString(), this);
-    if (t.error() != PackageKit::Client::NoError) {
-        return false;
-    }
-    m_package.clear();
+    auto *t = PackageKit::Daemon::resolve(packageName);
+    m_packageId.clear();
     QEventLoop loop;
-    connect(&t, SIGNAL(finished(PackageKit::Enum::Exit,uint)), &loop, SLOT(quit()));
-    connect(&t, SIGNAL(finished(PackageKit::Enum::Exit,uint)), this, \
                SLOT(slotFinished(PackageKit::Enum::Exit,uint)));
-    connect(&t, SIGNAL(package(QSharedPointer<PackageKit::Package>)), this, \
                SLOT(slotPackage(QSharedPointer<PackageKit::Package>)));
-    t.resolve(packageName);
+    connect(t, &PackageKit::Transaction::finished, &loop, &QEventLoop::quit);
+    connect(t, &PackageKit::Transaction::finished, this, &QPkBackend::slotFinished);
+    connect(t, &PackageKit::Transaction::package, this, &QPkBackend::slotPackage);
     loop.exec();
-    return m_status == PackageKit::Enum::ExitSuccess && !m_package.isNull();
+    return m_status == PackageKit::Transaction::ExitSuccess && \
!m_packageId.isNull();  }
diff --git a/src/qPkBackend.h b/src/qPkBackend.h
index 24f1f59..755ae6b 100644
--- a/src/qPkBackend.h
+++ b/src/qPkBackend.h
@@ -21,8 +21,8 @@
 //Qt
 #include <QStringList>
 
-//QPackageKit
-#include <QPackageKit>
+//PackageKit
+#include <PackageKit/Transaction>
 
 class QPkBackend : public QObject
 {
@@ -40,17 +40,17 @@ Q_SIGNALS:
     void finished(bool success);
     void progress(const QString &status, int percentage);
 private Q_SLOTS:
-    void slotFinished(PackageKit::Enum::Exit status, uint runtime);
-    void slotPackage(const QSharedPointer<PackageKit::Package> &package);
+    void slotFinished(PackageKit::Transaction::Exit status, uint runtime);
+    void slotPackage(PackageKit::Transaction::Info info, const QString &packageId, \
const QString &summary);  void slotUpdateProgress();
 private:
     bool packageExists(const QString &packageName);
 
     PackageKit::Transaction *m_t;
-    PackageKit::Enum::Exit m_status;
-    QSharedPointer<PackageKit::Package> m_package;
+    PackageKit::Transaction::Exit m_status;
+    QString m_packageId;
     QStringList m_remove;
-    QList< QSharedPointer<PackageKit::Package> > m_removePtrs;
+    QStringList m_removeIds;
 };
 
 #endif
diff --git a/src/removeDlg.cpp b/src/removeDlg.cpp
index 24e71a6..23f1247 100644
--- a/src/removeDlg.cpp
+++ b/src/removeDlg.cpp
@@ -27,8 +27,10 @@
 #include <QTimer>
 #include <QIcon>
 #include <QProgressDialog>
+#include <QPushButton>
 
 //KDE
+#include <KLocalizedString>
 #include <KMessageBox>
 
 //Project
@@ -60,10 +62,12 @@ RemoveDialog::RemoveDialog(const QList<Entry> &entries, QWidget \
*parent) : QDial  
     m_progressDlg = 0;
 
-#if HAVE_QAPT && QAPT_VERSION_MAJOR == 1
+#if HAVE_QAPT
+#if QAPT_VERSION_MAJOR == 1
     m_backend = new QAptBackend;
-#elif HAVE_QAPT && QAPT_VERSION_MAJOR == 2
+#elif QAPT_VERSION_MAJOR == 2
     m_backend = new QApt2Backend;
+#endif
 #elif HAVE_QPACKAGEKIT
     m_backend = new QPkBackend;
 #endif
diff --git a/src/removeDlg.h b/src/removeDlg.h
index b5fdb0b..bdb3b51 100644
--- a/src/removeDlg.h
+++ b/src/removeDlg.h
@@ -28,10 +28,12 @@ class QProgressDialog;
 //Project
 #include <config.h>
 class Entry;
-#if HAVE_QAPT && QAPT_VERSION_MAJOR == 1
+#if HAVE_QAPT
+#if QAPT_VERSION_MAJOR == 1
 #include "qaptBackend.h"
-#elif HAVE_QAPT && QAPT_VERSION_MAJOR == 2
+#elif QAPT_VERSION_MAJOR == 2
 #include "qapt2Backend.h"
+#endif
 #elif HAVE_QPACKAGEKIT
 #include "qPkBackend.h"
 #endif
@@ -56,10 +58,12 @@ private Q_SLOTS:
 private:
     void detectCurrentKernelImage();
 
-#if HAVE_QAPT && QAPT_VERSION_MAJOR == 1
+#if HAVE_QAPT
+#if QAPT_VERSION_MAJOR == 1
     QAptBackend *m_backend;
-#elif HAVE_QAPT && QAPT_VERSION_MAJOR == 2
+#elif QAPT_VERSION_MAJOR == 2
     QApt2Backend *m_backend;
+#endif
 #elif HAVE_QPACKAGEKIT
     QPkBackend *m_backend;
 #endif


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic