Blob Blame History Raw
diff --git a/PkSession/CMakeLists.txt b/PkSession/CMakeLists.txt
--- a/PkSession/CMakeLists.txt
+++ b/PkSession/CMakeLists.txt
@@ -44,6 +44,7 @@
     KF5::KIOFileWidgets
     KF5::KDELibs4Support
     KF5::IconThemes
+    KF5::DBusAddons
     ${PackageKitQt5_LIBRARIES}
     apper_private
 )
diff --git a/PkSession/PkSession.h b/PkSession/PkSession.h
--- a/PkSession/PkSession.h
+++ b/PkSession/PkSession.h
@@ -21,15 +21,15 @@
 #ifndef PKSESSION_H
 #define PKSESSION_H
 
-#include <KUniqueApplication>
+#include <QObject>
 #include <QTimer>
 
 class PkInterface;
-class PkSession : public KUniqueApplication
+class PkSession : public QObject
 {
     Q_OBJECT
 public:
-    PkSession();
+    explicit PkSession(QObject* parent = 0);
     virtual ~PkSession();
     int newInstance();
 
diff --git a/PkSession/PkSession.cpp b/PkSession/PkSession.cpp
--- a/PkSession/PkSession.cpp
+++ b/PkSession/PkSession.cpp
@@ -22,6 +22,7 @@
 
 #include "PkInterface.h"
 
+#include <QApplication>
 #include <QStringBuilder>
 
 #include <KLocalizedString>
@@ -35,8 +36,8 @@
 
 using namespace PackageKit;
 
-PkSession::PkSession() :
-    KUniqueApplication()
+PkSession::PkSession(QObject* parent)
+    : QObject(parent)
 {
     m_pkInterface = new PkInterface(this);
     connect(m_pkInterface, SIGNAL(close()),
@@ -46,7 +47,7 @@
     Daemon::global()->setHints(QLatin1String("locale=") % locale);
 
     // this enables not quitting when closing a transaction ui
-    setQuitOnLastWindowClosed(false);
+    qApp->setQuitOnLastWindowClosed(false);
 
     // create the close timer and connect it's signal
     m_closeT = new QTimer(this);
@@ -83,7 +84,7 @@
     // again just to be sure.
     if (!isRunning()) {
         kDebug() << "Closed by Timer";
-        quit();
+        qApp->quit();
     }
 }
 
diff --git a/PkSession/main.cpp b/PkSession/main.cpp
--- a/PkSession/main.cpp
+++ b/PkSession/main.cpp
@@ -21,14 +21,21 @@
 #include "PkSession.h"
 #include <config.h>
 
-#include <KDebug>
+#include <QApplication>
+#include <QDebug>
+#include <QIcon>
+#include <QSessionManager>
+
+#include <KAboutData>
 #include <KConfig>
+#include <KDBusService>
 #include <KLocalizedString>
-#include <KAboutData>
-#include <KCmdLineArgs>
 
 int main(int argc, char **argv)
 {
+    QApplication app(argc, argv);
+    app.setWindowIcon(QIcon::fromTheme("system-software-install"));
+
     KLocalizedString::setApplicationDomain("apper");
 
     KAboutData aboutData("PkSession",
@@ -41,18 +48,16 @@
     aboutData.addAuthor(i18n("Trever Fischer"), QString(), "wm161@wm161.net", "http://wm161.net");
 
     aboutData.addCredit(i18n("Adrien Bustany"), i18n("libpackagekit-qt and other stuff"),"@");
-    aboutData.setProgramIconName("system-software-install");
     KAboutData::setApplicationData(aboutData);
 
-    //! KCmdLineArgs::init(argc, argv);
-	Q_UNUSED(argc);
-	Q_UNUSED(argv);
-
-    if (!PkSession::start()) {
-        //kDebug() << "PkSession is already running!";
-        return 0;
-    }
+    // Let's ensure we only have one PkSession at any one time on the same session
+    KDBusService service(KDBusService::Unique);
+    auto disableSessionManagement = [](QSessionManager &sm) {
+        sm.setRestartHint(QSessionManager::RestartNever);
+    };
+    QObject::connect(&app, &QGuiApplication::commitDataRequest, disableSessionManagement);
+    QObject::connect(&app, &QGuiApplication::saveStateRequest, disableSessionManagement);
 
-    PkSession app;
+    PkSession session;
     return app.exec();
 }