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

List:       kde-commits
Subject:    [kcm-grub2] /: *ADDED: Preliminary LibQApt 2.x support.
From:       Konstantinos Smanis <konstantinos.smanis () gmail ! com>
Date:       2013-10-03 0:15:07
Message-ID: E1VRWZP-00046M-5t () scm ! kde ! org
[Download RAW message or body]

Git commit a4b4642a87a3449d62e78fd9518bc2738889ba71 by Konstantinos Smanis.
Committed on 02/10/2013 at 23:59.
Pushed by ksmanis into branch 'master'.

*ADDED: Preliminary LibQApt 2.x support.

Added support for the 2.x branch of LibQApt, kindly contributed by
Jonathan Thomas.

Since Debian still uses the 1.x branch, both branches will be supported
for the time being. The effort is minimal really, I just merged
Jonathan's (almost-year-old!) patch adding the bits necessary for
parallel support of both branches.

Supporting 3 different backends is currently managed using preprocessor
directives, which isn't really nice. Perhaps we should move to a proper
C++ implementation using inheritance.

CCMAIL: <echidnaman@gmail.com>

M  +5    -2    cmake/modules/FindQApt.cmake
M  +1    -0    config.h.cmake
M  +5    -1    src/CMakeLists.txt
M  +1    -1    src/qPkBackend.cpp
C  +19   -23   src/qapt2Backend.cpp [from: src/qaptBackend.cpp - 065% similarity]
C  +24   -40   src/qapt2Backend.h [from: src/removeDlg.h - 060% similarity]
M  +1    -1    src/qaptBackend.cpp
M  +3    -1    src/removeDlg.cpp
M  +6    -2    src/removeDlg.h

http://commits.kde.org/kcm-grub2/a4b4642a87a3449d62e78fd9518bc2738889ba71

diff --git a/cmake/modules/FindQApt.cmake b/cmake/modules/FindQApt.cmake
index c7ce182..9d562aa 100644
--- a/cmake/modules/FindQApt.cmake
+++ b/cmake/modules/FindQApt.cmake
@@ -22,9 +22,12 @@ endif (NOT QAPT_MIN_VERSION)
 if (NOT WIN32)
    # use pkg-config to get the directories and then use these values
    # in the FIND_PATH() and FIND_LIBRARY() calls
-   find_package(PkgConfig)
+   find_package(PkgConfig REQUIRED)
    pkg_check_modules(PC_QAPT libqapt)
-   set(QAPT_DEFINITIONS ${PC_QAPT_CFLAGS_OTHER})
+   if(${PC_QAPT_FOUND})
+       set(QAPT_DEFINITIONS ${PC_QAPT_CFLAGS_OTHER})
+       string(REGEX MATCH "^[0-9]+" QAPT_VERSION_MAJOR ${PC_QAPT_VERSION})
+   endif(${PC_QAPT_FOUND})
 endif (NOT WIN32)
 
 find_path( QAPT_INCLUDE_DIR
diff --git a/config.h.cmake b/config.h.cmake
index 41af0c7..fabe1a4 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -6,5 +6,6 @@
 #define HAVE_HD @HAVE_HD@
 #define HAVE_QAPT @HAVE_QAPT@
 #define HAVE_QPACKAGEKIT @HAVE_QPACKAGEKIT@
+#define QAPT_VERSION_MAJOR @QAPT_VERSION_MAJOR@
 
 #endif
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 395f0a0..fbfbd45 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -25,7 +25,11 @@ if (HAVE_QAPT OR HAVE_QPACKAGEKIT)
     kde4_add_ui_files(kcm_grub2_SRCS ../ui/removeDlg.ui)
 endif (HAVE_QAPT OR HAVE_QPACKAGEKIT)
 if (HAVE_QAPT)
-    set(kcm_grub2_SRCS ${kcm_grub2_SRCS} qaptBackend.cpp)
+    if (QAPT_VERSION_MAJOR EQUAL 1)
+        set(kcm_grub2_SRCS ${kcm_grub2_SRCS} qaptBackend.cpp)
+    elseif (QAPT_VERSION_MAJOR EQUAL 2)
+        set(kcm_grub2_SRCS ${kcm_grub2_SRCS} qapt2Backend.cpp)
+    endif (QAPT_VERSION_MAJOR EQUAL 1)
 else (HAVE_QAPT)
     if (HAVE_QPACKAGEKIT)
         set(kcm_grub2_SRCS ${kcm_grub2_SRCS} qPkBackend.cpp)
diff --git a/src/qPkBackend.cpp b/src/qPkBackend.cpp
index f45d437..56ad5a6 100644
--- a/src/qPkBackend.cpp
+++ b/src/qPkBackend.cpp
@@ -141,7 +141,7 @@ static QString statusToString(PackageKit::Enum::Status status)
     return QString();
 }
 
-QPkBackend::QPkBackend(QObject *parent): QObject(parent)
+QPkBackend::QPkBackend(QObject *parent) : QObject(parent)
 {
     m_t = 0;
 }
diff --git a/src/qaptBackend.cpp b/src/qapt2Backend.cpp
similarity index 65%
copy from src/qaptBackend.cpp
copy to src/qapt2Backend.cpp
index 0c445ba..6fecd78 100644
--- a/src/qaptBackend.cpp
+++ b/src/qapt2Backend.cpp
@@ -16,28 +16,25 @@
  *******************************************************************************/
 
 //Own
-#include "qaptBackend.h"
+#include "qapt2Backend.h"
 
-//Qt
-#include <QEventLoop>
-
-QAptBackend::QAptBackend(QObject *parent): QObject(parent)
+QApt2Backend::QApt2Backend(QObject *parent) : QObject(parent)
 {
     m_backend = new QApt::Backend;
     m_backend->init();
-    m_error = QApt::UnknownError;
+    m_exitStatus = QApt::ExitSuccess;
 }
-QAptBackend::~QAptBackend()
+QApt2Backend::~QApt2Backend()
 {
     delete m_backend;
 }
 
-QStringList QAptBackend::ownerPackage(const QString &fileName)
+QStringList QApt2Backend::ownerPackage(const QString &fileName)
 {
     QApt::Package *package;
     return (package = m_backend->packageForFile(fileName)) ? QStringList() << \
package->name() << package->version() : QStringList();  }
-void QAptBackend::markForRemoval(const QString &packageName)
+void QApt2Backend::markForRemoval(const QString &packageName)
 {
     Q_FOREACH(const QApt::Package *package, m_backend->markedPackages()) {
         if (packageName.compare(package->name()) == 0) {
@@ -49,7 +46,7 @@ void QAptBackend::markForRemoval(const QString &packageName)
         package->setRemove();
     }
 }
-QStringList QAptBackend::markedForRemoval() const
+QStringList QApt2Backend::markedForRemoval() const
 {
     QStringList marked;
     Q_FOREACH(const QApt::Package *package, m_backend->markedPackages()) {
@@ -57,26 +54,25 @@ QStringList QAptBackend::markedForRemoval() const
     }
     return marked;
 }
-void QAptBackend::removePackages()
+void QApt2Backend::removePackages()
 {
-    connect(m_backend, SIGNAL(commitProgress(QString,int)), this, \
                SIGNAL(progress(QString,int)));
-    connect(m_backend, SIGNAL(workerEvent(QApt::WorkerEvent)), this, \
                SLOT(slotWorkerEvent(QApt::WorkerEvent)));
-    connect(m_backend, SIGNAL(errorOccurred(QApt::ErrorCode,QVariantMap)), this, \
                SLOT(slotErrorOccurred(QApt::ErrorCode,QVariantMap)));
-    m_backend->commitChanges();
+    m_trans = m_backend->commitChanges();
+
+    connect(m_trans, SIGNAL(progressChanged(int)), this, \
SLOT(slotUpdateProgress())); +    connect(m_trans, \
SIGNAL(finished(QApt::ExitStatus)), this, \
SLOT(slotTransactionFinished(QApt::ExitStatus))); +    m_trans->run();
 }
-void QAptBackend::undoChanges()
+void QApt2Backend::undoChanges()
 {
     m_backend->init();
 }
 
-void QAptBackend::slotWorkerEvent(QApt::WorkerEvent event)
+void QApt2Backend::slotUpdateProgress()
 {
-    if (event == QApt::CommitChangesFinished) {
-        emit finished(m_error == QApt::UnknownError);
-    }
+    emit progress(m_trans->statusDetails(), m_trans->progress());
 }
-void QAptBackend::slotErrorOccurred(QApt::ErrorCode error, const QVariantMap \
&details) +void QApt2Backend::slotTransactionFinished(QApt::ExitStatus status)
 {
-    Q_UNUSED(details)
-    m_error = error;
+    m_exitStatus = status;
+    emit finished(status == QApt::ExitSuccess);
 }
diff --git a/src/removeDlg.h b/src/qapt2Backend.h
similarity index 60%
copy from src/removeDlg.h
copy to src/qapt2Backend.h
index 245b946..bf39cff 100644
--- a/src/removeDlg.h
+++ b/src/qapt2Backend.h
@@ -15,54 +15,38 @@
  * with this program. If not, see <http://www.gnu.org/licenses/>.              *
  *******************************************************************************/
 
-//Krazy
-//krazy:excludeall=cpp
+#ifndef QAPT2BACKEND_H
+#define QAPT2BACKEND_H
 
-#ifndef REMOVEDLG_H
-#define REMOVEDLG_H
+//Qt
+#include <QStringList>
 
-//KDE
-#include <KDialog>
-class KProgressDialog;
+//QApt
+#include <LibQApt/Backend>
+#include <LibQApt/Transaction>
 
-//Project
-#include <config.h>
-class Entry;
-#if HAVE_QAPT
-#include "qaptBackend.h"
-#elif HAVE_QPACKAGEKIT
-#include "qPkBackend.h"
-#endif
-
-//Ui
-namespace Ui
-{
-    class RemoveDialog;
-}
-
-class RemoveDialog : public KDialog
+class QApt2Backend : public QObject
 {
     Q_OBJECT
 public:
-    explicit RemoveDialog(const QList<Entry> &entries, QWidget *parent = 0, \
                Qt::WFlags flags = 0);
-    virtual ~RemoveDialog();
-protected Q_SLOTS:
-    virtual void slotButtonClicked(int button);
+    explicit QApt2Backend(QObject *parent = 0);
+    virtual ~QApt2Backend();
+
+    QStringList ownerPackage(const QString &fileName);
+    void markForRemoval(const QString &packageName);
+    QStringList markedForRemoval() const;
+    void removePackages();
+    void undoChanges();
+Q_SIGNALS:
+    void finished(bool success);
+    void progress(const QString &status, int percentage);
 private Q_SLOTS:
-    void slotItemChanged();
-    void slotProgress(const QString &status, int percentage);
-    void slotFinished(bool success);
+    void slotUpdateProgress();
+    void slotTransactionFinished(QApt::ExitStatus status);
 private:
-    void detectCurrentKernelImage();
-
-#if HAVE_QAPT
-    QAptBackend *m_backend;
-#elif HAVE_QPACKAGEKIT
-    QPkBackend *m_backend;
-#endif
-    QString m_currentKernelImage;
-    KProgressDialog *m_progressDlg;
-    Ui::RemoveDialog *ui;
+    QApt::Backend *m_backend;
+    QApt::ExitStatus m_exitStatus;
+    QApt::Transaction *m_trans;
 };
 
 #endif
diff --git a/src/qaptBackend.cpp b/src/qaptBackend.cpp
index 0c445ba..365aa91 100644
--- a/src/qaptBackend.cpp
+++ b/src/qaptBackend.cpp
@@ -21,7 +21,7 @@
 //Qt
 #include <QEventLoop>
 
-QAptBackend::QAptBackend(QObject *parent): QObject(parent)
+QAptBackend::QAptBackend(QObject *parent) : QObject(parent)
 {
     m_backend = new QApt::Backend;
     m_backend->init();
diff --git a/src/removeDlg.cpp b/src/removeDlg.cpp
index 609addd..1c8d75f 100644
--- a/src/removeDlg.cpp
+++ b/src/removeDlg.cpp
@@ -48,8 +48,10 @@ RemoveDialog::RemoveDialog(const QList<Entry> &entries, QWidget \
*parent, Qt::WFl  
     m_progressDlg = 0;
 
-#if HAVE_QAPT
+#if HAVE_QAPT && QAPT_VERSION_MAJOR == 1
     m_backend = new QAptBackend;
+#elif HAVE_QAPT && QAPT_VERSION_MAJOR == 2
+    m_backend = new QApt2Backend;
 #elif HAVE_QPACKAGEKIT
     m_backend = new QPkBackend;
 #endif
diff --git a/src/removeDlg.h b/src/removeDlg.h
index 245b946..77b282d 100644
--- a/src/removeDlg.h
+++ b/src/removeDlg.h
@@ -28,8 +28,10 @@ class KProgressDialog;
 //Project
 #include <config.h>
 class Entry;
-#if HAVE_QAPT
+#if HAVE_QAPT && QAPT_VERSION_MAJOR == 1
 #include "qaptBackend.h"
+#elif HAVE_QAPT && QAPT_VERSION_MAJOR == 2
+#include "qapt2Backend.h"
 #elif HAVE_QPACKAGEKIT
 #include "qPkBackend.h"
 #endif
@@ -55,8 +57,10 @@ private Q_SLOTS:
 private:
     void detectCurrentKernelImage();
 
-#if HAVE_QAPT
+#if HAVE_QAPT && QAPT_VERSION_MAJOR == 1
     QAptBackend *m_backend;
+#elif HAVE_QAPT && QAPT_VERSION_MAJOR == 2
+    QApt2Backend *m_backend;
 #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