File indexing completed on 2024-04-21 15:06:31

0001 /*
0002     SPDX-FileCopyrightText: 2011 Ilia Kats <ilia-kats@gmx.net>
0003     SPDX-FileCopyrightText: 2013 Daniel Nicoletti <dantti12@gmail.com>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006 */
0007 
0008 #include "manager_p.h"
0009 #include "nmdebug.h"
0010 #include "wimaxdevice.h"
0011 #include "wimaxnsp_p.h"
0012 
0013 namespace NetworkManager
0014 {
0015 NetworkManager::WimaxNsp::NetworkType convertNetworkType(uint type)
0016 {
0017     switch (type) {
0018     case 0:
0019         return NetworkManager::WimaxNsp::Unknown;
0020     case 1:
0021         return NetworkManager::WimaxNsp::Home;
0022     case 2:
0023         return NetworkManager::WimaxNsp::Partner;
0024     case 3:
0025         return NetworkManager::WimaxNsp::RoamingPartner;
0026     }
0027     return NetworkManager::WimaxNsp::Unknown;
0028 }
0029 
0030 }
0031 
0032 NetworkManager::WimaxNspPrivate::WimaxNspPrivate(const QString &path, WimaxNsp *q)
0033 #ifdef NMQT_STATIC
0034     : iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::sessionBus())
0035 #else
0036     : iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::systemBus())
0037 #endif
0038     , networkType(WimaxNsp::Unknown)
0039     , signalQuality(0)
0040     , q_ptr(q)
0041 {
0042 }
0043 
0044 NetworkManager::WimaxNsp::WimaxNsp(const QString &path, QObject *parent)
0045     : QObject(parent)
0046     , d_ptr(new WimaxNspPrivate(path, this))
0047 {
0048     Q_D(WimaxNsp);
0049     d->uni = path;
0050     if (d->iface.isValid()) {
0051         connect(&d->iface, &OrgFreedesktopNetworkManagerWiMaxNspInterface::PropertiesChanged, d, &WimaxNspPrivate::propertiesChanged);
0052         d->networkType = convertNetworkType(d->iface.networkType());
0053         d->name = d->iface.name();
0054         d->signalQuality = d->iface.signalQuality();
0055     }
0056 }
0057 
0058 NetworkManager::WimaxNsp::~WimaxNsp()
0059 {
0060     Q_D(WimaxNsp);
0061     delete d;
0062 }
0063 
0064 QString NetworkManager::WimaxNsp::uni() const
0065 {
0066     Q_D(const WimaxNsp);
0067     return d->uni;
0068 }
0069 
0070 NetworkManager::WimaxNsp::NetworkType NetworkManager::WimaxNsp::networkType() const
0071 {
0072     Q_D(const WimaxNsp);
0073     return d->networkType;
0074 }
0075 
0076 QString NetworkManager::WimaxNsp::name() const
0077 {
0078     Q_D(const WimaxNsp);
0079     return d->name;
0080 }
0081 
0082 uint NetworkManager::WimaxNsp::signalQuality() const
0083 {
0084     Q_D(const WimaxNsp);
0085     return d->signalQuality;
0086 }
0087 
0088 void NetworkManager::WimaxNspPrivate::propertiesChanged(const QVariantMap &properties)
0089 {
0090     Q_Q(WimaxNsp);
0091 
0092     QVariantMap::const_iterator it = properties.constBegin();
0093     while (it != properties.constEnd()) {
0094         const QString property = it.key();
0095         if (property == QLatin1String("Name")) {
0096             name = it->toString();
0097             Q_EMIT q->nameChanged(name);
0098         } else if (property == QLatin1String("NetworkType")) {
0099             networkType = convertNetworkType(it->toUInt());
0100             Q_EMIT q->networkTypeChanged(networkType);
0101         } else if (property == QLatin1String("SignalQuality")) {
0102             signalQuality = it->toUInt();
0103             Q_EMIT q->signalQualityChanged(signalQuality);
0104         } else {
0105             qCWarning(NMQT) << Q_FUNC_INFO << "Unhandled property" << property;
0106         }
0107         ++it;
0108     }
0109 }
0110 
0111 #include "moc_wimaxnsp.cpp"
0112 #include "moc_wimaxnsp_p.cpp"