File indexing completed on 2025-02-02 14:20:52
0001 /* 0002 SPDX-FileCopyrightText: 2008 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 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 "modemlocation.h" 0011 #include "mmdebug_p.h" 0012 #include "modemlocation_p.h" 0013 #ifdef MMQT_STATIC 0014 #include "dbus/fakedbus.h" 0015 #else 0016 #include "dbus/dbus.h" 0017 #endif 0018 0019 ModemManager::ModemLocationPrivate::ModemLocationPrivate(const QString &path, ModemLocation *q) 0020 : InterfacePrivate(path, q) 0021 #ifdef MMQT_STATIC 0022 , modemLocationIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::sessionBus()) 0023 #else 0024 , modemLocationIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::systemBus()) 0025 #endif 0026 , q_ptr(q) 0027 { 0028 if (modemLocationIface.isValid()) { 0029 capabilities = (ModemManager::ModemLocation::LocationSources)modemLocationIface.capabilities(); 0030 enabledCapabilities = (ModemManager::ModemLocation::LocationSources)modemLocationIface.enabled(); 0031 signalsLocation = modemLocationIface.signalsLocation(); 0032 location = modemLocationIface.location(); 0033 } 0034 } 0035 0036 ModemManager::ModemLocation::ModemLocation(const QString &path, QObject *parent) 0037 : Interface(*new ModemLocationPrivate(path, this), parent) 0038 { 0039 Q_D(ModemLocation); 0040 0041 qRegisterMetaType<LocationSources>(); 0042 0043 #ifdef MMQT_STATIC 0044 QDBusConnection::sessionBus().connect(QLatin1String(MMQT_DBUS_SERVICE), 0045 d->uni, 0046 QLatin1String(DBUS_INTERFACE_PROPS), 0047 QStringLiteral("PropertiesChanged"), 0048 d, 0049 SLOT(onPropertiesChanged(QString, QVariantMap, QStringList))); 0050 #else 0051 QDBusConnection::systemBus().connect(QLatin1String(MMQT_DBUS_SERVICE), 0052 d->uni, 0053 QLatin1String(DBUS_INTERFACE_PROPS), 0054 QStringLiteral("PropertiesChanged"), 0055 d, 0056 SLOT(onPropertiesChanged(QString, QVariantMap, QStringList))); 0057 #endif 0058 } 0059 0060 ModemManager::ModemLocation::~ModemLocation() 0061 { 0062 } 0063 0064 QDBusPendingReply<void> ModemManager::ModemLocation::setup(ModemManager::ModemLocation::LocationSources sources, bool signalLocation) 0065 { 0066 Q_D(ModemLocation); 0067 return d->modemLocationIface.Setup(sources, signalLocation); 0068 } 0069 0070 QDBusPendingReply<ModemManager::LocationInformationMap> ModemManager::ModemLocation::getLocation() 0071 { 0072 Q_D(ModemLocation); 0073 return d->modemLocationIface.GetLocation(); 0074 } 0075 0076 ModemManager::ModemLocation::LocationSources ModemManager::ModemLocation::capabilities() const 0077 { 0078 Q_D(const ModemLocation); 0079 return (LocationSources)d->capabilities; 0080 } 0081 0082 ModemManager::ModemLocation::LocationSources ModemManager::ModemLocation::enabledCapabilities() const 0083 { 0084 Q_D(const ModemLocation); 0085 return (LocationSources)d->enabledCapabilities; 0086 } 0087 0088 bool ModemManager::ModemLocation::isEnabled() const 0089 { 0090 Q_D(const ModemLocation); 0091 return d->enabledCapabilities > MM_MODEM_LOCATION_SOURCE_NONE; 0092 } 0093 0094 bool ModemManager::ModemLocation::signalsLocation() const 0095 { 0096 Q_D(const ModemLocation); 0097 return d->signalsLocation; 0098 } 0099 0100 ModemManager::LocationInformationMap ModemManager::ModemLocation::location() const 0101 { 0102 Q_D(const ModemLocation); 0103 return d->location; 0104 } 0105 0106 void ModemManager::ModemLocation::setTimeout(int timeout) 0107 { 0108 Q_D(ModemLocation); 0109 d->modemLocationIface.setTimeout(timeout); 0110 } 0111 0112 int ModemManager::ModemLocation::timeout() const 0113 { 0114 Q_D(const ModemLocation); 0115 return d->modemLocationIface.timeout(); 0116 } 0117 0118 void ModemManager::ModemLocationPrivate::onPropertiesChanged(const QString &interface, const QVariantMap &properties, const QStringList &invalidatedProps) 0119 { 0120 Q_Q(ModemLocation); 0121 Q_UNUSED(invalidatedProps); 0122 qCDebug(MMQT) << interface << properties.keys(); 0123 0124 if (interface == QLatin1String(MMQT_DBUS_INTERFACE_MODEM_LOCATION)) { 0125 QVariantMap::const_iterator it = properties.constFind(QLatin1String(MM_MODEM_LOCATION_PROPERTY_CAPABILITIES)); 0126 if (it != properties.constEnd()) { 0127 capabilities = (ModemManager::ModemLocation::LocationSources)it->toUInt(); 0128 Q_EMIT q->capabilitiesChanged(capabilities); 0129 } 0130 it = properties.constFind(QLatin1String(MM_MODEM_LOCATION_PROPERTY_ENABLED)); 0131 if (it != properties.constEnd()) { 0132 enabledCapabilities = (ModemManager::ModemLocation::LocationSources)it->toUInt(); 0133 Q_EMIT q->enabledCapabilitiesChanged(enabledCapabilities); 0134 } 0135 it = properties.constFind(QLatin1String(MM_MODEM_LOCATION_PROPERTY_SIGNALSLOCATION)); 0136 if (it != properties.constEnd()) { 0137 signalsLocation = it->toBool(); 0138 Q_EMIT q->signalsLocationChanged(signalsLocation); 0139 } 0140 it = properties.constFind(QLatin1String(MM_MODEM_LOCATION_PROPERTY_LOCATION)); 0141 if (it != properties.constEnd()) { 0142 location = qdbus_cast<ModemManager::LocationInformationMap>(*it); 0143 Q_EMIT q->locationChanged(location); 0144 } 0145 } 0146 } 0147 0148 #include "moc_modemlocation.cpp"