File indexing completed on 2024-04-28 03:59:49

0001 /*
0002     SPDX-FileCopyrightText: 2015 Jan Grulich <jgrulich@redhat.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "objectmanager.h"
0008 #include "dbus/fakedbus.h"
0009 
0010 #include <QDBusMetaType>
0011 
0012 ObjectManager::ObjectManager(QObject *parent)
0013     : QDBusAbstractAdaptor(parent)
0014 {
0015     qDBusRegisterMetaType<QDBusObjectPath>();
0016     qDBusRegisterMetaType<ModemManager::MMVariantMapMap>();
0017     qDBusRegisterMetaType<ModemManager::DBUSManagerStruct>();
0018 }
0019 
0020 ObjectManager::~ObjectManager()
0021 {
0022 }
0023 
0024 void ObjectManager::addInterfaces(const QDBusObjectPath &object_path, const ModemManager::MMVariantMapMap &interfaces_and_properties)
0025 {
0026     if (m_managedObjects.contains(object_path)) {
0027         ModemManager::MMVariantMapMap map = m_managedObjects.value(object_path);
0028         map.insert(interfaces_and_properties);
0029         m_managedObjects.insert(object_path, map);
0030     } else {
0031         m_managedObjects.insert(object_path, interfaces_and_properties);
0032     }
0033 
0034     Q_EMIT InterfacesAdded(object_path, interfaces_and_properties);
0035 }
0036 
0037 void ObjectManager::removeInterfaces(const QDBusObjectPath &object_path, const QStringList &interfaces)
0038 {
0039     if (interfaces.contains(QLatin1String(MMQT_DBUS_INTERFACE_MODEM))) {
0040         m_managedObjects.remove(object_path);
0041     } else {
0042         ModemManager::MMVariantMapMap map = m_managedObjects.value(object_path);
0043         Q_FOREACH (const QString &key, interfaces) {
0044             map.remove(key);
0045         }
0046         m_managedObjects.insert(object_path, map);
0047     }
0048 
0049     Q_EMIT InterfacesRemoved(object_path, interfaces);
0050 }
0051 
0052 ModemManager::DBUSManagerStruct ObjectManager::GetManagedObjects()
0053 {
0054     return m_managedObjects;
0055 }
0056 
0057 #include "moc_objectmanager.cpp"