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