File indexing completed on 2025-02-02 14:20:51
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"