File indexing completed on 2024-04-28 05:35:35

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"