File indexing completed on 2024-04-21 16:11:00

0001 /*
0002     SPDX-FileCopyrightText: 2022 Aditya Mehra <aix.m@outlook.com>
0003     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004 */
0005 
0006 #include "controllermanagerdbusinterface.h"
0007 #include "device.h"
0008 #include <QDBusConnection>
0009 #include <QDBusConnectionInterface>
0010 #include <QDBusMessage>
0011 #include <QDBusArgument>
0012 
0013 ControllerManagerDBusInterface::ControllerManagerDBusInterface(QObject *parent)
0014     : QObject(parent)
0015 {
0016     QDBusConnection::sessionBus().registerObject("/ControllerManager", this, QDBusConnection::ExportAllSignals | QDBusConnection::ExportAllSlots);
0017 }
0018 
0019 ControllerManagerDBusInterface::~ControllerManagerDBusInterface()
0020 {
0021 }
0022 
0023 Q_SCRIPTABLE QStringList ControllerManagerDBusInterface::connectedDevices()
0024 {
0025     auto connected_devices = ControllerManager::instance().connectedDevices();
0026     QStringList deviceList;
0027     for (auto device : connected_devices) {
0028         deviceList << device->getUniqueIdentifier();
0029     }
0030 
0031     return deviceList;
0032 }
0033 
0034 Q_SCRIPTABLE QString ControllerManagerDBusInterface::deviceName(const QString &uniqueIdentifier)
0035 {
0036     QVector<Device*> devices = ControllerManager::instance().connectedDevices();
0037     for (auto device : devices) {
0038         if (device->getUniqueIdentifier() == uniqueIdentifier) {
0039             return device->getName();
0040         }
0041     }
0042     return QString();
0043 }
0044 
0045 Q_SCRIPTABLE int ControllerManagerDBusInterface::deviceType(const QString &uniqueIdentifier)
0046 {
0047     QVector<Device*> devices = ControllerManager::instance().connectedDevices();
0048     for (auto device : devices) {
0049         if (device->getUniqueIdentifier() == uniqueIdentifier) {
0050             return device->getDeviceType();
0051         }
0052     }
0053    
0054     return -1;
0055 }
0056 
0057 Q_SCRIPTABLE QString ControllerManagerDBusInterface::deviceIconName(const QString &uniqueIdentifier)
0058 {
0059     QVector<Device*> devices = ControllerManager::instance().connectedDevices();
0060     for (auto device : devices) {
0061         if (device->getUniqueIdentifier() == uniqueIdentifier) {
0062             return device->iconName();
0063         }
0064     }
0065     return QString();
0066 }
0067 
0068 Q_SCRIPTABLE void ControllerManagerDBusInterface::acquireNoOp()
0069 {
0070     ControllerManager::instance().noopInput();
0071 }
0072 
0073 Q_SCRIPTABLE void ControllerManagerDBusInterface::releaseNoOp()
0074 {
0075     ControllerManager::instance().resetInputSystem();
0076 }