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"