File indexing completed on 2024-05-12 05:37:20

0001 /*
0002     SPDX-FileCopyrightText: 2007 Christopher Blauvelt <cblauvelt@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-only
0005 */
0006 
0007 #include "devicesignalmapmanager.h"
0008 
0009 DeviceSignalMapManager::DeviceSignalMapManager(QObject *parent)
0010     : QObject(parent)
0011 {
0012     user = parent;
0013 }
0014 
0015 DeviceSignalMapManager::~DeviceSignalMapManager()
0016 {
0017 }
0018 
0019 void DeviceSignalMapManager::mapDevice(Solid::Battery *battery, const QString &udi)
0020 {
0021     BatterySignalMapper *map = nullptr;
0022     if (!signalmap.contains(Solid::DeviceInterface::Battery)) {
0023         map = new BatterySignalMapper(this);
0024         signalmap[Solid::DeviceInterface::Battery] = map;
0025         connect(map, SIGNAL(deviceChanged(QString, QString, QVariant)), user, SLOT(deviceChanged(QString, QString, QVariant)));
0026     } else {
0027         map = (BatterySignalMapper *)signalmap[Solid::DeviceInterface::Battery];
0028     }
0029 
0030     connect(battery, &Solid::Battery::chargePercentChanged, map, &BatterySignalMapper::chargePercentChanged);
0031     connect(battery, &Solid::Battery::chargeStateChanged, map, &BatterySignalMapper::chargeStateChanged);
0032     connect(battery, &Solid::Battery::presentStateChanged, map, &BatterySignalMapper::presentStateChanged);
0033     map->setMapping(battery, udi);
0034 }
0035 
0036 void DeviceSignalMapManager::mapDevice(Solid::StorageAccess *storageaccess, const QString &udi)
0037 {
0038     StorageAccessSignalMapper *map = nullptr;
0039     if (!signalmap.contains(Solid::DeviceInterface::StorageAccess)) {
0040         map = new StorageAccessSignalMapper(this);
0041         signalmap[Solid::DeviceInterface::StorageAccess] = map;
0042         connect(map, SIGNAL(deviceChanged(QString, QString, QVariant)), user, SLOT(deviceChanged(QString, QString, QVariant)));
0043     } else {
0044         map = (StorageAccessSignalMapper *)signalmap[Solid::DeviceInterface::StorageAccess];
0045     }
0046 
0047     connect(storageaccess, &Solid::StorageAccess::accessibilityChanged, map, &StorageAccessSignalMapper::accessibilityChanged);
0048     map->setMapping(storageaccess, udi);
0049 }
0050 
0051 void DeviceSignalMapManager::unmapDevice(Solid::Battery *battery)
0052 {
0053     BatterySignalMapper *map = (BatterySignalMapper *)signalmap.value(Solid::DeviceInterface::Battery);
0054     if (!map) {
0055         return;
0056     }
0057 
0058     disconnect(battery, &Solid::Battery::chargePercentChanged, map, &BatterySignalMapper::chargePercentChanged);
0059     disconnect(battery, &Solid::Battery::chargeStateChanged, map, &BatterySignalMapper::chargeStateChanged);
0060     disconnect(battery, &Solid::Battery::presentStateChanged, map, &BatterySignalMapper::presentStateChanged);
0061 }
0062 
0063 void DeviceSignalMapManager::unmapDevice(Solid::StorageAccess *storageaccess)
0064 {
0065     StorageAccessSignalMapper *map = (StorageAccessSignalMapper *)signalmap.value(Solid::DeviceInterface::StorageAccess);
0066     if (!map) {
0067         return;
0068     }
0069 
0070     disconnect(storageaccess, &Solid::StorageAccess::accessibilityChanged, map, &StorageAccessSignalMapper::accessibilityChanged);
0071 }