/* SPDX-FileCopyrightText: 2023 Joshua Goins SPDX-FileCopyrightText: 2023 Jeremy Whiting SPDX-FileCopyrightText: 2023 Niccolò Venerandi SPDX-FileCopyrightText: 2025 Yelsin Sepulveda SPDX-FileCopyrightText: 2025 Jakob Petsovits SPDX-License-Identifier: GPL-2.0-or-later */ #include "kcm.h" #include #include #include #include #include #include #include #include "axesmodel.h" #include "axesproxymodel.h" #include "buttonmodel.h" #include "devicemodel.h" #include "gamecontrolleremulationsettings.h" #include "gamecontrollermoduledata.h" #include "hatmodel.h" K_PLUGIN_FACTORY_WITH_JSON(KCMGameControllerFactory, "kcm_gamecontroller.json", registerPlugin(); registerPlugin();) static const QString s_kwinPluginId = QStringLiteral("gamecontroller"); KCMGameController::KCMGameController(QObject *parent, const KPluginMetaData &metaData) : KQuickConfigModule(parent, metaData) , m_emulationSettings(std::make_unique()) { setButtons(Help); constexpr const char *uri{"org.kde.plasma.gamecontroller.kcm"}; qmlRegisterUncreatableType(uri, 1, 0, "KCMGameController", QString()); qmlRegisterSingletonInstance(uri, 1, 0, "DeviceModel", DeviceModel::instance()); qmlRegisterType(uri, 1, 0, "AxesModel"); qmlRegisterType(uri, 1, 0, "AxesProxyModel"); qmlRegisterType(uri, 1, 0, "ButtonModel"); qmlRegisterType(uri, 1, 0, "HatModel"); } KCMGameController::~KCMGameController() { } bool KCMGameController::isPluginEnabled() const { return m_emulationSettings->gamecontrollerEnabled(); } void KCMGameController::setPluginEnabled(bool enabled) { m_emulationSettings->setGamecontrollerEnabled(enabled); m_emulationSettings->save(); QDBusMessage message; if (enabled) { message = QDBusMessage::createMethodCall(QStringLiteral("org.kde.KWin"), QStringLiteral("/Plugins"), QStringLiteral("org.kde.KWin.Plugins"), QStringLiteral("LoadPlugin")); message << s_kwinPluginId; } else { message = QDBusMessage::createMethodCall(QStringLiteral("org.kde.KWin"), QStringLiteral("/Plugins"), QStringLiteral("org.kde.KWin.Plugins"), QStringLiteral("UnloadPlugin")); message << s_kwinPluginId; } QDBusConnection::sessionBus().asyncCall(message); Q_EMIT pluginEnabledChanged(); } #include "kcm.moc" #include "moc_kcm.cpp"