File indexing completed on 2024-05-19 07:49:16
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 "modemmessaging.h" 0008 0009 #include <QDBusConnection> 0010 #include <QDBusMessage> 0011 0012 ModemMessaging::ModemMessaging(QObject *parent) 0013 : QDBusAbstractAdaptor(parent) 0014 , m_enabledNotifications(false) 0015 , m_messageCounter(0) 0016 , m_defaultStorage(0) 0017 { 0018 } 0019 0020 ModemMessaging::~ModemMessaging() 0021 { 0022 } 0023 0024 uint ModemMessaging::defaultStorage() const 0025 { 0026 return m_defaultStorage; 0027 } 0028 0029 QList<QDBusObjectPath> ModemMessaging::messages() const 0030 { 0031 return m_messages.keys(); 0032 } 0033 0034 ModemManager::UIntList ModemMessaging::supportedStorages() const 0035 { 0036 return m_supportedStorages; 0037 } 0038 0039 QDBusObjectPath ModemMessaging::Create(const QVariantMap &properties) 0040 { 0041 Q_UNUSED(properties); 0042 return QDBusObjectPath(); 0043 } 0044 0045 void ModemMessaging::Delete(const QDBusObjectPath &path) 0046 { 0047 m_messages.remove(path); 0048 QDBusConnection::sessionBus().unregisterObject(path.path()); 0049 0050 Q_EMIT Deleted(path); 0051 } 0052 0053 QList<QDBusObjectPath> ModemMessaging::List() 0054 { 0055 return m_messages.keys(); 0056 } 0057 0058 void ModemMessaging::setModemPath(const QString &path) 0059 { 0060 m_modemPath = path; 0061 } 0062 0063 void ModemMessaging::setEnableNotifications(bool enable) 0064 { 0065 m_enabledNotifications = enable; 0066 } 0067 0068 void ModemMessaging::addMessage(Sms *sms) 0069 { 0070 QString newSmsPath = QStringLiteral("/org/kde/fakemodem/Sms/") + QString::number(m_messageCounter++); 0071 sms->setSmsPath(newSmsPath); 0072 sms->setEnableNotifications(true); 0073 m_messages.insert(QDBusObjectPath(newSmsPath), sms); 0074 QDBusConnection::sessionBus().registerObject(newSmsPath, sms, QDBusConnection::ExportScriptableContents); 0075 Q_EMIT Added(QDBusObjectPath(newSmsPath), false); 0076 } 0077 0078 void ModemMessaging::setDefaultStorage(uint defaultStorage) 0079 { 0080 m_defaultStorage = defaultStorage; 0081 0082 if (m_enabledNotifications) { 0083 QVariantMap map; 0084 map.insert(QLatin1String("DefaultStorage"), m_defaultStorage); 0085 QDBusMessage message = QDBusMessage::createSignal(m_modemPath, QLatin1String("org.freedesktop.DBus.Properties"), QLatin1String("PropertiesChanged")); 0086 message << QLatin1String("org.kde.fakemodem.Modem.Messaging") << map << QStringList(); 0087 QDBusConnection::sessionBus().send(message); 0088 } 0089 } 0090 0091 void ModemMessaging::setSupportedStorages(const ModemManager::UIntList &supportedStorages) 0092 { 0093 m_supportedStorages = supportedStorages; 0094 0095 if (m_enabledNotifications) { 0096 QVariantMap map; 0097 map.insert(QLatin1String("SupportedStorages"), QVariant::fromValue<ModemManager::UIntList>(m_supportedStorages)); 0098 QDBusMessage message = QDBusMessage::createSignal(m_modemPath, QLatin1String("org.freedesktop.DBus.Properties"), QLatin1String("PropertiesChanged")); 0099 message << QLatin1String("org.kde.fakemodem.Modem.Messaging") << map << QStringList(); 0100 QDBusConnection::sessionBus().send(message); 0101 } 0102 } 0103 0104 QVariantMap ModemMessaging::toMap() const 0105 { 0106 QVariantMap map; 0107 #if MM_CHECK_VERSION(1, 2, 0) 0108 map.insert(QLatin1String(MM_MODEM_MESSAGING_PROPERTY_MESSAGES), QVariant::fromValue<QList<QDBusObjectPath>>(m_messages.keys())); 0109 #endif 0110 map.insert(QLatin1String(MM_MODEM_MESSAGING_PROPERTY_SUPPORTEDSTORAGES), QVariant::fromValue<ModemManager::UIntList>(m_supportedStorages)); 0111 map.insert(QLatin1String(MM_MODEM_MESSAGING_PROPERTY_DEFAULTSTORAGE), m_defaultStorage); 0112 return map; 0113 } 0114 0115 #include "moc_modemmessaging.cpp"