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"