File indexing completed on 2024-04-28 15:33:00

0001 /*
0002     SPDX-FileCopyrightText: 2008, 2011 Will Stephenson <wstephenson@kde.org>
0003     SPDX-FileCopyrightText: 2010-2011 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 "sim.h"
0011 #include "mmdebug_p.h"
0012 #include "sim_p.h"
0013 #ifdef MMQT_STATIC
0014 #include "dbus/fakedbus.h"
0015 #else
0016 #include "dbus/dbus.h"
0017 #endif
0018 
0019 ModemManager::SimPrivate::SimPrivate(const QString &path, Sim *q)
0020 #ifdef MMQT_STATIC
0021     : simIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::sessionBus())
0022 #else
0023     : simIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::systemBus())
0024 #endif
0025     , uni(path)
0026     , q_ptr(q)
0027 {
0028     if (simIface.isValid()) {
0029         simIdentifier = simIface.simIdentifier();
0030         imsi = simIface.imsi();
0031         operatorIdentifier = simIface.operatorIdentifier();
0032         operatorName = simIface.operatorName();
0033     }
0034 }
0035 
0036 ModemManager::Sim::Sim(const QString &path, QObject *parent)
0037     : QObject(parent)
0038     , d_ptr(new SimPrivate(path, this))
0039 {
0040     Q_D(Sim);
0041 #ifdef MMQT_STATIC
0042     QDBusConnection::sessionBus().connect(QLatin1String(MMQT_DBUS_SERVICE),
0043                                           path,
0044                                           QLatin1String(DBUS_INTERFACE_PROPS),
0045                                           QStringLiteral("PropertiesChanged"),
0046                                           d,
0047                                           SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
0048 #else
0049     QDBusConnection::systemBus().connect(QLatin1String(MMQT_DBUS_SERVICE),
0050                                          path,
0051                                          QLatin1String(DBUS_INTERFACE_PROPS),
0052                                          QStringLiteral("PropertiesChanged"),
0053                                          d,
0054                                          SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
0055 #endif
0056 }
0057 
0058 ModemManager::Sim::~Sim()
0059 {
0060     delete d_ptr;
0061 }
0062 
0063 QString ModemManager::Sim::simIdentifier() const
0064 {
0065     Q_D(const Sim);
0066     return d->simIdentifier;
0067 }
0068 
0069 QString ModemManager::Sim::imsi() const
0070 {
0071     Q_D(const Sim);
0072     return d->imsi;
0073 }
0074 
0075 QString ModemManager::Sim::operatorIdentifier() const
0076 {
0077     Q_D(const Sim);
0078     return d->operatorIdentifier;
0079 }
0080 
0081 QString ModemManager::Sim::operatorName() const
0082 {
0083     Q_D(const Sim);
0084     return d->operatorName;
0085 }
0086 
0087 QDBusPendingReply<> ModemManager::Sim::sendPuk(const QString &puk, const QString &pin)
0088 {
0089     Q_D(Sim);
0090     return d->simIface.SendPuk(puk, pin);
0091 }
0092 
0093 QDBusPendingReply<> ModemManager::Sim::sendPin(const QString &pin)
0094 {
0095     Q_D(Sim);
0096     return d->simIface.SendPin(pin);
0097 }
0098 
0099 QDBusPendingReply<> ModemManager::Sim::enablePin(const QString &pin, bool enabled)
0100 {
0101     Q_D(Sim);
0102     return d->simIface.EnablePin(pin, enabled);
0103 }
0104 
0105 QDBusPendingReply<> ModemManager::Sim::changePin(const QString &oldPin, const QString &newPin)
0106 {
0107     Q_D(Sim);
0108     return d->simIface.ChangePin(oldPin, newPin);
0109 }
0110 
0111 QString ModemManager::Sim::uni() const
0112 {
0113     Q_D(const Sim);
0114     return d->uni;
0115 }
0116 
0117 void ModemManager::Sim::setTimeout(int timeout)
0118 {
0119     Q_D(Sim);
0120     d->simIface.setTimeout(timeout);
0121 }
0122 
0123 int ModemManager::Sim::timeout() const
0124 {
0125     Q_D(const Sim);
0126     return d->simIface.timeout();
0127 }
0128 
0129 void ModemManager::SimPrivate::onPropertiesChanged(const QString &interface, const QVariantMap &properties, const QStringList &invalidatedProps)
0130 {
0131     Q_Q(Sim);
0132     Q_UNUSED(invalidatedProps);
0133     qCDebug(MMQT) << interface << properties.keys();
0134 
0135     if (interface == QLatin1String(MMQT_DBUS_INTERFACE_SIM)) {
0136         QVariantMap::const_iterator it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_SIMIDENTIFIER));
0137         if (it != properties.constEnd()) {
0138             simIdentifier = it->toString();
0139             Q_EMIT q->simIdentifierChanged(simIdentifier);
0140         }
0141         it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_IMSI));
0142         if (it != properties.constEnd()) {
0143             imsi = it->toString();
0144             Q_EMIT q->imsiChanged(imsi);
0145         }
0146         it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_OPERATORIDENTIFIER));
0147         if (it != properties.constEnd()) {
0148             operatorIdentifier = it->toString();
0149             Q_EMIT q->operatorIdentifierChanged(operatorIdentifier);
0150         }
0151         it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_OPERATORNAME));
0152         if (it != properties.constEnd()) {
0153             operatorName = it->toString();
0154             Q_EMIT q->operatorNameChanged(operatorName);
0155         }
0156     }
0157 }
0158 
0159 #include "moc_sim.cpp"
0160 #include "moc_sim_p.cpp"