// SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2026 A-La-Karte Contributors #include #include #include #include #include #include #include #include #include #include #include using namespace KAuth; static const QString kPowerProfilesService = QStringLiteral("net.hadess.PowerProfiles"); static const QString kPowerProfilesPath = QStringLiteral("/net/hadess/PowerProfiles"); static const QString kPowerProfilesInterface = QStringLiteral("net.hadess.PowerProfiles"); class GameCenterHelper : public QObject { Q_OBJECT public Q_SLOTS: ActionReply setpowerprofile(const QVariantMap &args); }; static QString unwrapStringArg(const QVariantMap &args, const QString &key) { QVariant v = args.value(key); if (v.canConvert()) { v = v.value().variant(); } return v.toString(); } ActionReply GameCenterHelper::setpowerprofile(const QVariantMap &args) { const QString profile = unwrapStringArg(args, QStringLiteral("profile")); if (profile.isEmpty()) { ActionReply reply = ActionReply::HelperErrorReply(); reply.setErrorDescription(QStringLiteral("missing profile")); return reply; } QDBusConnection bus = QDBusConnection::systemBus(); if (!bus.isConnected()) { ActionReply reply = ActionReply::HelperErrorReply(); reply.setErrorDescription(QStringLiteral("system bus not connected")); return reply; } QDBusInterface props(kPowerProfilesService, kPowerProfilesPath, QStringLiteral("org.freedesktop.DBus.Properties"), bus); if (!props.isValid()) { ActionReply reply = ActionReply::HelperErrorReply(); reply.setErrorDescription(QStringLiteral("power-profiles-daemon D-Bus interface not available")); return reply; } QDBusMessage msg = QDBusMessage::createMethodCall(kPowerProfilesService, kPowerProfilesPath, QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("Set")); msg.setArguments({kPowerProfilesInterface, QStringLiteral("ActiveProfile"), QVariant::fromValue(QDBusVariant(profile))}); const QDBusMessage replyMsg = bus.call(msg, QDBus::Block, 5000); if (replyMsg.type() == QDBusMessage::ErrorMessage) { ActionReply reply = ActionReply::HelperErrorReply(); reply.setErrorDescription(replyMsg.errorName() + QStringLiteral(": ") + replyMsg.errorMessage()); return reply; } return ActionReply::SuccessReply(); } KAUTH_HELPER_MAIN("org.kde.alakarte.gamecenter.helper", GameCenterHelper) #include "gamecenterkauthhelper.moc"