File indexing completed on 2024-04-28 11:47:34

0001 /*
0002     SPDX-FileCopyrightText: 2008, 2011 Will Stephenson <wstephenson@kde.org>
0003     SPDX-FileCopyrightText: 2010 Lamarque Souza <lamarque@kde.org>
0004     SPDX-FileCopyrightText: 2013 Lukas Tinkl <ltinkl@redhat.com>
0005     SPDX-FileCopyrightText: 2013-2015 Jan Grulich <jgrulich@redhat.com>
0006 
0007     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0008 */
0009 
0010 #include "modem3gppussd.h"
0011 #include "mmdebug_p.h"
0012 #include "modem3gppussd_p.h"
0013 #ifdef MMQT_STATIC
0014 #include "dbus/fakedbus.h"
0015 #else
0016 #include "dbus/dbus.h"
0017 #endif
0018 
0019 ModemManager::Modem3gppUssdPrivate::Modem3gppUssdPrivate(const QString &path, Modem3gppUssd *q)
0020     : InterfacePrivate(path, q)
0021 #ifdef MMQT_STATIC
0022     , ussdIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::sessionBus())
0023 #else
0024     , ussdIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::systemBus())
0025 #endif
0026     , q_ptr(q)
0027 {
0028     if (ussdIface.isValid()) {
0029         state = (MMModem3gppUssdSessionState)ussdIface.state();
0030         networkNotification = ussdIface.networkNotification();
0031         networkRequest = ussdIface.networkRequest();
0032     }
0033 }
0034 
0035 ModemManager::Modem3gppUssd::Modem3gppUssd(const QString &path, QObject *parent)
0036     : Interface(*new Modem3gppUssdPrivate(path, this), parent)
0037 {
0038     Q_D(Modem3gppUssd);
0039 
0040     qRegisterMetaType<MMModem3gppUssdSessionState>();
0041 
0042 #ifdef MMQT_STATIC
0043     QDBusConnection::sessionBus().connect(QLatin1String(MMQT_DBUS_SERVICE),
0044                                           d->uni,
0045                                           QLatin1String(DBUS_INTERFACE_PROPS),
0046                                           QStringLiteral("PropertiesChanged"),
0047                                           d,
0048                                           SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
0049 #else
0050     QDBusConnection::systemBus().connect(QLatin1String(MMQT_DBUS_SERVICE),
0051                                          d->uni,
0052                                          QLatin1String(DBUS_INTERFACE_PROPS),
0053                                          QStringLiteral("PropertiesChanged"),
0054                                          d,
0055                                          SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
0056 #endif
0057 }
0058 
0059 ModemManager::Modem3gppUssd::~Modem3gppUssd()
0060 {
0061 }
0062 
0063 void ModemManager::Modem3gppUssdPrivate::onPropertiesChanged(const QString &interface, const QVariantMap &properties, const QStringList &invalidatedProps)
0064 {
0065     Q_Q(Modem3gppUssd);
0066     Q_UNUSED(invalidatedProps);
0067     qCDebug(MMQT) << interface << properties.keys();
0068 
0069     if (interface == QLatin1String(MMQT_DBUS_INTERFACE_MODEM_MODEM3GPP_USSD)) {
0070         QVariantMap::const_iterator it = properties.constFind(QLatin1String(MM_MODEM_MODEM3GPP_USSD_PROPERTY_STATE));
0071         if (it != properties.constEnd()) {
0072             state = (MMModem3gppUssdSessionState)it->toUInt();
0073             Q_EMIT q->stateChanged(state);
0074         }
0075         it = properties.constFind(QLatin1String(MM_MODEM_MODEM3GPP_USSD_PROPERTY_NETWORKNOTIFICATION));
0076         if (it != properties.constEnd()) {
0077             networkNotification = it->toString();
0078             Q_EMIT q->networkNotificationChanged(networkNotification);
0079         }
0080         it = properties.constFind(QLatin1String(MM_MODEM_MODEM3GPP_USSD_PROPERTY_NETWORKREQUEST));
0081         if (it != properties.constEnd()) {
0082             networkRequest = it->toString();
0083             Q_EMIT q->networkRequestChanged(networkRequest);
0084         }
0085     }
0086 }
0087 
0088 QDBusPendingReply<QString> ModemManager::Modem3gppUssd::initiate(const QString &command)
0089 {
0090     Q_D(Modem3gppUssd);
0091     return d->ussdIface.Initiate(command);
0092 }
0093 
0094 QDBusPendingReply<QString> ModemManager::Modem3gppUssd::respond(const QString &response)
0095 {
0096     Q_D(Modem3gppUssd);
0097     return d->ussdIface.Respond(response);
0098 }
0099 
0100 void ModemManager::Modem3gppUssd::cancel()
0101 {
0102     Q_D(Modem3gppUssd);
0103     d->ussdIface.Cancel();
0104 }
0105 
0106 MMModem3gppUssdSessionState ModemManager::Modem3gppUssd::state() const
0107 {
0108     Q_D(const Modem3gppUssd);
0109     return d->state;
0110 }
0111 
0112 QString ModemManager::Modem3gppUssd::networkNotification() const
0113 {
0114     Q_D(const Modem3gppUssd);
0115     return d->networkNotification;
0116 }
0117 
0118 QString ModemManager::Modem3gppUssd::networkRequest() const
0119 {
0120     Q_D(const Modem3gppUssd);
0121     return d->networkRequest;
0122 }
0123 
0124 void ModemManager::Modem3gppUssd::setTimeout(int timeout)
0125 {
0126     Q_D(Modem3gppUssd);
0127     d->ussdIface.setTimeout(timeout);
0128 }
0129 
0130 int ModemManager::Modem3gppUssd::timeout() const
0131 {
0132     Q_D(const Modem3gppUssd);
0133     return d->ussdIface.timeout();
0134 }
0135 
0136 #include "moc_modem3gppussd.cpp"
0137 #include "moc_modem3gppussd_p.cpp"