File indexing completed on 2024-05-19 05:37:51

0001 /*
0002     SPDX-FileCopyrightText: 2012 Gregor Taetzner <gregor@freenet.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #include "packagekitengine.h"
0008 #include "packagekitservice.h"
0009 
0010 #include <QDBusConnection>
0011 #include <QDBusMessage>
0012 
0013 PackagekitEngine::PackagekitEngine(QObject *parent)
0014     : DataEngine(parent)
0015     , m_pk_available(false)
0016 {
0017 }
0018 
0019 void PackagekitEngine::init()
0020 {
0021     QDBusMessage message;
0022     message = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.DBus"),
0023                                              QStringLiteral("/org/freedesktop/DBus"),
0024                                              QStringLiteral("org.freedesktop.DBus"),
0025                                              QStringLiteral("ListActivatableNames"));
0026 
0027     QDBusMessage reply = QDBusConnection::sessionBus().call(message);
0028     if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().size() == 1) {
0029         QStringList list = reply.arguments().first().toStringList();
0030         if (list.contains(QLatin1String("org.freedesktop.PackageKit"))) {
0031             m_pk_available = true;
0032         }
0033     }
0034 
0035     setData(QStringLiteral("Status"), QStringLiteral("available"), m_pk_available);
0036 }
0037 
0038 Plasma5Support::Service *PackagekitEngine::serviceForSource(const QString &source)
0039 {
0040     if (m_pk_available) {
0041         return new PackagekitService(this);
0042     }
0043 
0044     // if packagekit not available, return null service
0045     return Plasma5Support::DataEngine::serviceForSource(source);
0046 }
0047 
0048 K_PLUGIN_CLASS_WITH_JSON(PackagekitEngine, "plasma-dataengine-packagekit.json")
0049 
0050 #include "packagekitengine.moc"