File indexing completed on 2024-04-28 16:54:31
0001 /* 0002 SPDX-FileCopyrightText: 2019 David Edmundson <daviedmundson@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 // This file overrides the auto-generated login1_manager_interface.cpp in order 0008 // change the interface name and act as a completely transparent Logind1 / CK2 wrapper 0009 0010 #include "login1_manager_interface.h" 0011 #include "sessionmanagementbackend.h" 0012 0013 enum LogindProvider { 0014 Unknown, 0015 None, 0016 ConsoleKit2, 0017 Logind1, 0018 }; 0019 static LogindProvider s_mode = Unknown; 0020 0021 static LogindProvider getLogindMode() 0022 { 0023 if (s_mode != Unknown) { 0024 return s_mode; 0025 } 0026 if (QDBusConnection::systemBus().interface()->isServiceRegistered(QStringLiteral("org.freedesktop.login1"))) { 0027 s_mode = Logind1; 0028 } else if (QDBusConnection::systemBus().interface()->isServiceRegistered(QStringLiteral("org.freedesktop.ConsoleKit"))) { 0029 s_mode = ConsoleKit2; 0030 } else { 0031 s_mode = None; 0032 } 0033 return s_mode; 0034 } 0035 0036 bool LogindSessionBackend::exists() 0037 { 0038 return getLogindMode() != None; 0039 } 0040 0041 OrgFreedesktopLogin1ManagerInterface::OrgFreedesktopLogin1ManagerInterface(const QString &, const QString &, const QDBusConnection &connection, QObject *parent) 0042 : QDBusAbstractInterface(getLogindMode() == Logind1 ? QStringLiteral("org.freedesktop.login1") : QStringLiteral("org.freedesktop.ConsoleKit"), 0043 getLogindMode() == Logind1 ? QStringLiteral("/org/freedesktop/login1") : QStringLiteral("/org/freedesktop/ConsoleKit/Manager"), 0044 getLogindMode() == Logind1 ? "org.freedesktop.login1.Manager" : "org.freedesktop.ConsoleKit.Manager", 0045 connection, 0046 parent) 0047 { 0048 } 0049 0050 OrgFreedesktopLogin1ManagerInterface::~OrgFreedesktopLogin1ManagerInterface() 0051 { 0052 } 0053 0054 #include "login1_manager_interface.moc"