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