diff options
Diffstat (limited to 'src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp')
-rw-r--r-- | src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp | 1019 |
1 files changed, 0 insertions, 1019 deletions
diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp deleted file mode 100644 index 2d6cba1791..0000000000 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp +++ /dev/null @@ -1,1019 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QObject> -#include <QList> -#include <QtDBus/QtDBus> -#include <QtDBus/QDBusConnection> -#include <QtDBus/QDBusError> -#include <QtDBus/QDBusInterface> -#include <QtDBus/QDBusMessage> -#include <QtDBus/QDBusReply> -#include <QtDBus/QDBusPendingCallWatcher> -#include <QtDBus/QDBusObjectPath> -#include <QtDBus/QDBusPendingCall> - -#include "qnetworkmanagerservice.h" - -#ifndef QT_NO_DBUS - -#define DBUS_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties" - -QT_BEGIN_NAMESPACE - - -QNetworkManagerInterface::QNetworkManagerInterface(QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - NM_DBUS_INTERFACE, - QDBusConnection::systemBus(),parent) -{ - if (!isValid()) { - return; - } - - PropertiesDBusInterface managerPropertiesInterface(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - DBUS_PROPERTIES_INTERFACE, - QDBusConnection::systemBus()); - QDBusPendingReply<QVariantMap> propsReply - = managerPropertiesInterface.call(QDBus::Block, QLatin1String("GetAll"), QLatin1String(NM_DBUS_INTERFACE)); - - if (!propsReply.isError()) { - propertyMap = propsReply.value(); - } else { - qWarning() << "propsReply" << propsReply.error().message(); - } - - QDBusPendingReply<QList <QDBusObjectPath> > nmReply - = call(QLatin1String("GetDevices")); - nmReply.waitForFinished(); - if (!nmReply.isError()) { - devicesPathList = nmReply.value(); - } else { - qWarning() << "nmReply" << nmReply.error().message(); - } - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QNetworkManagerInterface::~QNetworkManagerInterface() -{ - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("DeviceAdded"), - this,SIGNAL(deviceAdded(QDBusObjectPath))); - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("DeviceRemoved"), - this,SIGNAL(deviceRemoved(QDBusObjectPath))); -} - -bool QNetworkManagerInterface::setConnections() -{ - if (!isValid()) - return false; - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); - - bool allOk = false; - if (QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("DeviceAdded"), - this,SIGNAL(deviceAdded(QDBusObjectPath)))) { - allOk = true; - } - if (QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - QLatin1String(NM_DBUS_PATH), - QLatin1String(NM_DBUS_INTERFACE), - QLatin1String("DeviceRemoved"), - this,SIGNAL(deviceRemoved(QDBusObjectPath)))) { - allOk = true; - } - - return allOk; -} - -QList <QDBusObjectPath> QNetworkManagerInterface::getDevices() -{ - if (devicesPathList.isEmpty()) { - //qWarning("using blocking call!"); - QDBusReply<QList<QDBusObjectPath> > reply = call(QLatin1String("GetDevices")); - devicesPathList = reply.value(); - } - return devicesPathList; -} - -void QNetworkManagerInterface::activateConnection(QDBusObjectPath connectionPath, - QDBusObjectPath devicePath, - QDBusObjectPath specificObject) -{ - QDBusPendingCall pendingCall = asyncCall(QLatin1String("ActivateConnection"), - QVariant::fromValue(connectionPath), - QVariant::fromValue(devicePath), - QVariant::fromValue(specificObject)); - - QDBusPendingCallWatcher *callWatcher = new QDBusPendingCallWatcher(pendingCall); - connect(callWatcher, SIGNAL(finished(QDBusPendingCallWatcher*)), - this, SIGNAL(activationFinished(QDBusPendingCallWatcher*))); -} - -void QNetworkManagerInterface::deactivateConnection(QDBusObjectPath connectionPath) -{ - asyncCall(QLatin1String("DeactivateConnection"), QVariant::fromValue(connectionPath)); -} - -bool QNetworkManagerInterface::wirelessEnabled() const -{ - if (propertyMap.contains("WirelessEnabled")) - return propertyMap.value("WirelessEnabled").toBool(); - return false; -} - -bool QNetworkManagerInterface::wirelessHardwareEnabled() const -{ - if (propertyMap.contains("WirelessHardwareEnabled")) - return propertyMap.value("WirelessHardwareEnabled").toBool(); - return false; -} - -QList <QDBusObjectPath> QNetworkManagerInterface::activeConnections() const -{ - if (propertyMap.contains("ActiveConnections")) { - - const QDBusArgument &dbusArgs = qvariant_cast<QDBusArgument>(propertyMap.value("ActiveConnections")); - QDBusObjectPath path; - QList <QDBusObjectPath> list; - - dbusArgs.beginArray(); - while (!dbusArgs.atEnd()) { - dbusArgs >> path; - list.append(path); - } - dbusArgs.endArray(); - - return list; - } - - QList <QDBusObjectPath> list; - list << QDBusObjectPath(); - return list; -} - -QNetworkManagerInterface::NMState QNetworkManagerInterface::state() -{ - if (propertyMap.contains("State")) - return static_cast<QNetworkManagerInterface::NMState>(propertyMap.value("State").toUInt()); - return QNetworkManagerInterface::NM_STATE_UNKNOWN; -} - -QString QNetworkManagerInterface::version() const -{ - if (propertyMap.contains("Version")) - return propertyMap.value("Version").toString(); - return QString(); -} - -void QNetworkManagerInterface::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) { - propertyMap.insert(i.key(),i.value()); - - if (i.key() == QLatin1String("State")) { - quint32 state = i.value().toUInt(); - if (state == NM_DEVICE_STATE_ACTIVATED - || state == NM_DEVICE_STATE_DISCONNECTED - || state == NM_DEVICE_STATE_UNAVAILABLE - || state == NM_DEVICE_STATE_FAILED) { - Q_EMIT propertiesChanged(map); - Q_EMIT stateChanged(state); - } - } else if (i.key() == QLatin1String("ActiveConnections")) { - Q_EMIT propertiesChanged(map); - } - } -} - -QNetworkManagerInterfaceAccessPoint::QNetworkManagerInterfaceAccessPoint(const QString &dbusPathName, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - dbusPathName, - NM_DBUS_INTERFACE_ACCESS_POINT, - QDBusConnection::systemBus(),parent) -{ -} - -QNetworkManagerInterfaceAccessPoint::~QNetworkManagerInterfaceAccessPoint() -{ -} - -quint32 QNetworkManagerInterfaceAccessPoint::flags() const -{ - if (propertyMap.contains("Flags")) - return propertyMap.value("Flags").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceAccessPoint::wpaFlags() const -{ - if (propertyMap.contains("WpaFlags")) - return propertyMap.value("WpaFlags").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceAccessPoint::rsnFlags() const -{ - if (propertyMap.contains("RsnFlags")) - return propertyMap.value("RsnFlags").toUInt(); - return 0; -} - -QString QNetworkManagerInterfaceAccessPoint::ssid() const -{ - if (propertyMap.contains("Ssid")) - return propertyMap.value("Ssid").toString(); - return QString(); -} - -quint32 QNetworkManagerInterfaceAccessPoint::frequency() const -{ - if (propertyMap.contains("Frequency")) - return propertyMap.value("Frequency").toUInt(); - return 0; -} - -QString QNetworkManagerInterfaceAccessPoint::hwAddress() const -{ - if (propertyMap.contains("HwAddress")) - return propertyMap.value("HwAddress").toString(); - return QString(); -} - -quint32 QNetworkManagerInterfaceAccessPoint::mode() const -{ - if (propertyMap.contains("Mode")) - return propertyMap.value("Mode").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceAccessPoint::maxBitrate() const -{ - if (propertyMap.contains("MaxBitrate")) - return propertyMap.value("MaxBitrate").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceAccessPoint::strength() const -{ - if (propertyMap.contains("Strength")) - return propertyMap.value("Strength").toUInt(); - return 0; -} - -void QNetworkManagerInterfaceAccessPoint::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) - propertyMap.insert(i.key(),i.value()); -} - -QNetworkManagerInterfaceDevice::QNetworkManagerInterfaceDevice(const QString &deviceObjectPath, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - deviceObjectPath, - NM_DBUS_INTERFACE_DEVICE, - QDBusConnection::systemBus(),parent) -{ - - if (!isValid()) { - return; - } - PropertiesDBusInterface devicePropertiesInterface(QLatin1String(NM_DBUS_SERVICE), - deviceObjectPath, - DBUS_PROPERTIES_INTERFACE, - QDBusConnection::systemBus(),parent); - - QDBusPendingReply<QVariantMap> propsReply - = devicePropertiesInterface.call(QDBus::Block, QLatin1String("GetAll"), QLatin1String(NM_DBUS_INTERFACE_DEVICE)); - - if (!propsReply.isError()) { - propertyMap = propsReply.value(); - } - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - deviceObjectPath, - QLatin1String(NM_DBUS_INTERFACE_DEVICE), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QNetworkManagerInterfaceDevice::~QNetworkManagerInterfaceDevice() -{ - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - path(), - QLatin1String(NM_DBUS_INTERFACE_DEVICE), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QString QNetworkManagerInterfaceDevice::udi() const -{ - if (propertyMap.contains("Udi")) - return propertyMap.value("Udi").toString(); - return QString(); -} - -QString QNetworkManagerInterfaceDevice::networkInterface() const -{ - if (propertyMap.contains("Interface")) - return propertyMap.value("Interface").toString(); - return QString(); -} - -quint32 QNetworkManagerInterfaceDevice::ip4Address() const -{ - if (propertyMap.contains("Ip4Address")) - return propertyMap.value("Ip4Address").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceDevice::state() const -{ - if (propertyMap.contains("State")) - return propertyMap.value("State").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceDevice::deviceType() const -{ - if (propertyMap.contains("DeviceType")) - return propertyMap.value("DeviceType").toUInt(); - return 0; -} - -QDBusObjectPath QNetworkManagerInterfaceDevice::ip4config() const -{ - if (propertyMap.contains("Ip4Config")) - return qvariant_cast<QDBusObjectPath>(propertyMap.value("Ip4Config")); - return QDBusObjectPath(); -} - -void QNetworkManagerInterfaceDevice::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) { - if (i.key() == QLatin1String("AvailableConnections")) { //Device - const QDBusArgument &dbusArgs = qvariant_cast<QDBusArgument>(i.value()); - QDBusObjectPath path; - QStringList paths; - dbusArgs.beginArray(); - while (!dbusArgs.atEnd()) { - dbusArgs >> path; - paths << path.path(); - } - dbusArgs.endArray(); - Q_EMIT connectionsChanged(paths); - } - propertyMap.insert(i.key(),i.value()); - } - Q_EMIT propertiesChanged(map); -} - -QNetworkManagerInterfaceDeviceWired::QNetworkManagerInterfaceDeviceWired(const QString &ifaceDevicePath, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - NM_DBUS_INTERFACE_DEVICE_WIRED, - QDBusConnection::systemBus(), parent) -{ - if (!isValid()) { - return; - } - PropertiesDBusInterface deviceWiredPropertiesInterface(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - DBUS_PROPERTIES_INTERFACE, - QDBusConnection::systemBus(),parent); - - QDBusPendingReply<QVariantMap> propsReply - = deviceWiredPropertiesInterface.call(QDBus::Block, QLatin1String("GetAll"), QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRED)); - - if (!propsReply.isError()) { - propertyMap = propsReply.value(); - } - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRED), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QNetworkManagerInterfaceDeviceWired::~QNetworkManagerInterfaceDeviceWired() -{ - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - path(), - QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRED), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QString QNetworkManagerInterfaceDeviceWired::hwAddress() const -{ - if (propertyMap.contains("HwAddress")) - return propertyMap.value("HwAddress").toString(); - return QString(); -} - -quint32 QNetworkManagerInterfaceDeviceWired::speed() const -{ - if (propertyMap.contains("Speed")) - return propertyMap.value("Speed").toUInt(); - return 0; -} - -bool QNetworkManagerInterfaceDeviceWired::carrier() const -{ - if (propertyMap.contains("Carrier")) - return propertyMap.value("Carrier").toBool(); - return false; -} - -QStringList QNetworkManagerInterfaceDeviceWired::availableConnections() -{ - QStringList list; - if (propertyMap.contains("AvailableConnections")) { - const QDBusArgument &dbusArgs = qvariant_cast<QDBusArgument>(propertyMap.value("Carrier")); - QDBusObjectPath path; - dbusArgs.beginArray(); - while (!dbusArgs.atEnd()) { - dbusArgs >> path; - list << path.path(); - } - dbusArgs.endArray(); - } - - return list; -} - -void QNetworkManagerInterfaceDeviceWired::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) { - propertyMap.insert(i.key(),i.value()); - if (i.key() == QLatin1String("Carrier")) - Q_EMIT carrierChanged(i.value().toBool()); - } - Q_EMIT propertiesChanged(map); -} - -QNetworkManagerInterfaceDeviceWireless::QNetworkManagerInterfaceDeviceWireless(const QString &ifaceDevicePath, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - NM_DBUS_INTERFACE_DEVICE_WIRELESS, - QDBusConnection::systemBus(), parent) -{ - if (!isValid()) { - return; - } - - interfacePath = ifaceDevicePath; - QDBusPendingReply<QList <QDBusObjectPath> > nmReply - = call(QLatin1String("GetAccessPoints")); - - if (!nmReply.isError()) { - accessPointsList = nmReply.value(); - } - - PropertiesDBusInterface deviceWirelessPropertiesInterface(QLatin1String(NM_DBUS_SERVICE), - interfacePath, - DBUS_PROPERTIES_INTERFACE, - QDBusConnection::systemBus(),parent); - - QDBusPendingReply<QVariantMap> propsReply - = deviceWirelessPropertiesInterface.call(QDBus::Block, QLatin1String("GetAll"), QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS)); - - if (!propsReply.isError()) { - propertyMap = propsReply.value(); - } - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - interfacePath, - QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QNetworkManagerInterfaceDeviceWireless::~QNetworkManagerInterfaceDeviceWireless() -{ - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - path(), - QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -bool QNetworkManagerInterfaceDeviceWireless::setConnections() -{ - return true; -} - -QList <QDBusObjectPath> QNetworkManagerInterfaceDeviceWireless::getAccessPoints() -{ - if (accessPointsList.isEmpty()) { - //qWarning("Using blocking call!"); - QDBusReply<QList<QDBusObjectPath> > reply - = call(QLatin1String("GetAccessPoints")); - accessPointsList = reply.value(); - } - return accessPointsList; -} - -QString QNetworkManagerInterfaceDeviceWireless::hwAddress() const -{ - if (propertyMap.contains("HwAddress")) - return propertyMap.value("HwAddress").toString(); - return QString(); -} - -quint32 QNetworkManagerInterfaceDeviceWireless::mode() const -{ - if (propertyMap.contains("Mode")) - return propertyMap.value("Mode").toUInt(); - return 0; -} - -quint32 QNetworkManagerInterfaceDeviceWireless::bitrate() const -{ - if (propertyMap.contains("Bitrate")) - return propertyMap.value("Bitrate").toUInt(); - return 0; -} - -QDBusObjectPath QNetworkManagerInterfaceDeviceWireless::activeAccessPoint() const -{ - if (propertyMap.contains("ActiveAccessPoint")) - return qvariant_cast<QDBusObjectPath>(propertyMap.value("ActiveAccessPoint")); - return QDBusObjectPath(); -} - -quint32 QNetworkManagerInterfaceDeviceWireless::wirelessCapabilities() const -{ - if (propertyMap.contains("WirelelessCapabilities")) - return propertyMap.value("WirelelessCapabilities").toUInt(); - return 0; -} - -void QNetworkManagerInterfaceDeviceWireless::requestScan() -{ - asyncCall(QLatin1String("RequestScan")); -} - -void QNetworkManagerInterfaceDeviceWireless::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) { - propertyMap.insert(i.key(),i.value()); - if (i.key() == QLatin1String("ActiveAccessPoint")) //DeviceWireless - Q_EMIT propertiesChanged(map); - } -} - -QNetworkManagerInterfaceDeviceModem::QNetworkManagerInterfaceDeviceModem(const QString &ifaceDevicePath, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - NM_DBUS_INTERFACE_DEVICE_MODEM, - QDBusConnection::systemBus(), parent) -{ - if (!isValid()) { - return; - } - PropertiesDBusInterface deviceModemPropertiesInterface(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - QLatin1String("org.freedesktop.DBus.Properties"), - QDBusConnection::systemBus(),parent); - - QDBusPendingReply<QVariantMap> propsReply - = deviceModemPropertiesInterface.call(QDBus::Block, QLatin1String("GetAll"), QLatin1String(NM_DBUS_INTERFACE_DEVICE_MODEM)); - - if (!propsReply.isError()) { - propertyMap = propsReply.value(); - } - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - ifaceDevicePath, - QLatin1String(NM_DBUS_INTERFACE_DEVICE_MODEM), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QNetworkManagerInterfaceDeviceModem::~QNetworkManagerInterfaceDeviceModem() -{ - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - path(), - QLatin1String(NM_DBUS_PATH_SETTINGS), - QLatin1String(NM_DBUS_IFACE_SETTINGS), - QLatin1String("NewConnection"), - this, SIGNAL(newConnection(QDBusObjectPath))); -} - -QNetworkManagerInterfaceDeviceModem::ModemCapabilities QNetworkManagerInterfaceDeviceModem::modemCapabilities() const -{ - if (propertyMap.contains("ModemCapabilities")) - return static_cast<QNetworkManagerInterfaceDeviceModem::ModemCapabilities>(propertyMap.value("ModemCapabilities").toUInt()); - return QNetworkManagerInterfaceDeviceModem::None; -} - -QNetworkManagerInterfaceDeviceModem::ModemCapabilities QNetworkManagerInterfaceDeviceModem::currentCapabilities() const -{ - if (propertyMap.contains("CurrentCapabilities")) - return static_cast<QNetworkManagerInterfaceDeviceModem::ModemCapabilities>(propertyMap.value("CurrentCapabilities").toUInt()); - return QNetworkManagerInterfaceDeviceModem::None; -} - -void QNetworkManagerInterfaceDeviceModem::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) - propertyMap.insert(i.key(),i.value()); - Q_EMIT propertiesChanged(map); -} - - -QNetworkManagerSettings::QNetworkManagerSettings(const QString &settingsService, QObject *parent) - : QDBusAbstractInterface(settingsService, - NM_DBUS_PATH_SETTINGS, - NM_DBUS_IFACE_SETTINGS, - QDBusConnection::systemBus(), parent) -{ - if (!isValid()) { - return; - } - interfacePath = settingsService; - QDBusPendingReply<QList <QDBusObjectPath> > nmReply - = call(QLatin1String("ListConnections")); - - if (!nmReply.isError()) { - connectionsList = nmReply.value(); - } -} - -QNetworkManagerSettings::~QNetworkManagerSettings() -{ -} - -bool QNetworkManagerSettings::setConnections() -{ - bool allOk = true; - if (!QDBusConnection::systemBus().connect(interfacePath, - QLatin1String(NM_DBUS_PATH_SETTINGS), - QLatin1String(NM_DBUS_IFACE_SETTINGS), - QLatin1String("NewConnection"), - this, SIGNAL(newConnection(QDBusObjectPath)))) { - allOk = false; - qWarning("NewConnection could not be connected"); - } - - return allOk; -} - -QList <QDBusObjectPath> QNetworkManagerSettings::listConnections() -{ - if (connectionsList.isEmpty()) { - //qWarning("Using blocking call!"); - QDBusReply<QList<QDBusObjectPath> > reply - = call(QLatin1String("ListConnections")); - connectionsList = reply.value(); - } - return connectionsList; -} - - -QString QNetworkManagerSettings::getConnectionByUuid(const QString &uuid) -{ - QDBusReply<QDBusObjectPath > reply = call(QDBus::Block, QLatin1String("GetConnectionByUuid"), uuid); - return reply.value().path(); -} - -QNetworkManagerSettingsConnection::QNetworkManagerSettingsConnection(const QString &settingsService, const QString &connectionObjectPath, QObject *parent) - : QDBusAbstractInterface(settingsService, - connectionObjectPath, - NM_DBUS_IFACE_SETTINGS_CONNECTION, - QDBusConnection::systemBus(), parent) -{ - qDBusRegisterMetaType<QNmSettingsMap>(); - if (!isValid()) { - return; - } - interfacepath = connectionObjectPath; - QDBusPendingReply<QNmSettingsMap> nmReply - = call(QLatin1String("GetSettings")); - if (!nmReply.isError()) { - settingsMap = nmReply.value(); - } -} - -QNetworkManagerSettingsConnection::~QNetworkManagerSettingsConnection() -{ - QDBusConnection::systemBus().disconnect(service(), - path(), - QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), - QLatin1String("Updated"), - this, SIGNAL(updated())); - QDBusConnection::systemBus().disconnect(service(), - path(), - QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), - QLatin1String("Removed"), - this, SIGNAL(slotSettingsRemoved())); -} - -bool QNetworkManagerSettingsConnection::setConnections() -{ - if (!isValid()) - return false; - - QDBusConnection dbusConnection = QDBusConnection::systemBus(); - bool allOk = true; - if (!dbusConnection.connect(service(), - interfacepath, - QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), - QLatin1String("Updated"), - this, SIGNAL(updated()))) { - allOk = false; - } - - if (!dbusConnection.connect(service(), - interfacepath, - QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), - QLatin1String("Removed"), - this, SIGNAL(slotSettingsRemoved()))) { - allOk = false; - } - return allOk; -} - -void QNetworkManagerSettingsConnection::slotSettingsRemoved() -{ - Q_EMIT removed(interfacepath); -} - -QNmSettingsMap QNetworkManagerSettingsConnection::getSettings() -{ - if (settingsMap.isEmpty()) { - //qWarning("Using blocking call!"); - QDBusReply<QNmSettingsMap> reply = call(QLatin1String("GetSettings")); - settingsMap = reply.value(); - } - return settingsMap; -} - -NMDeviceType QNetworkManagerSettingsConnection::getType() -{ - const QString devType = - settingsMap.value(QLatin1String("connection")).value(QLatin1String("type")).toString(); - - if (devType == QLatin1String("802-3-ethernet")) - return DEVICE_TYPE_ETHERNET; - else if (devType == QLatin1String("802-11-wireless")) - return DEVICE_TYPE_WIFI; - else if (devType == QLatin1String("gsm")) - return DEVICE_TYPE_MODEM; - else - return DEVICE_TYPE_UNKNOWN; -} - -bool QNetworkManagerSettingsConnection::isAutoConnect() -{ - const QVariant autoConnect = - settingsMap.value(QLatin1String("connection")).value(QLatin1String("autoconnect")); - - // NetworkManager default is to auto connect - if (!autoConnect.isValid()) - return true; - - return autoConnect.toBool(); -} - -quint64 QNetworkManagerSettingsConnection::getTimestamp() -{ - return settingsMap.value(QLatin1String("connection")) - .value(QLatin1String("timestamp")).toUInt(); -} - -QString QNetworkManagerSettingsConnection::getId() -{ - return settingsMap.value(QLatin1String("connection")).value(QLatin1String("id")).toString(); -} - -QString QNetworkManagerSettingsConnection::getUuid() -{ - const QString id = settingsMap.value(QLatin1String("connection")) - .value(QLatin1String("uuid")).toString(); - - // is no uuid, return the connection path - return id.isEmpty() ? path() : id; -} - -QString QNetworkManagerSettingsConnection::getSsid() -{ - return settingsMap.value(QLatin1String("802-11-wireless")) - .value(QLatin1String("ssid")).toString(); -} - -QString QNetworkManagerSettingsConnection::getMacAddress() -{ - NMDeviceType type = getType(); - - if (type == DEVICE_TYPE_ETHERNET) { - return settingsMap.value(QLatin1String("802-3-ethernet")) - .value(QLatin1String("mac-address")).toString(); - } else if (type == DEVICE_TYPE_WIFI) { - return settingsMap.value(QLatin1String("802-11-wireless")) - .value(QLatin1String("mac-address")).toString(); - } else { - return QString(); - } -} - -QStringList QNetworkManagerSettingsConnection::getSeenBssids() -{ - if (getType() == DEVICE_TYPE_WIFI) { - return settingsMap.value(QLatin1String("802-11-wireless")) - .value(QLatin1String("seen-bssids")).toStringList(); - } else { - return QStringList(); - } -} - -QNetworkManagerConnectionActive::QNetworkManagerConnectionActive(const QString &activeConnectionObjectPath, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - activeConnectionObjectPath, - NM_DBUS_INTERFACE_ACTIVE_CONNECTION, - QDBusConnection::systemBus(), parent) -{ - if (!isValid()) { - return; - } - PropertiesDBusInterface connectionActivePropertiesInterface(QLatin1String(NM_DBUS_SERVICE), - activeConnectionObjectPath, - QLatin1String("org.freedesktop.DBus.Properties"), - QDBusConnection::systemBus()); - - - QDBusPendingReply<QVariantMap> propsReply - = connectionActivePropertiesInterface.call(QDBus::Block, QLatin1String("GetAll"), QLatin1String(NM_DBUS_INTERFACE_ACTIVE_CONNECTION)); - - if (!propsReply.isError()) { - propertyMap = propsReply.value(); - } else { - qWarning() << propsReply.error().message(); - } - - QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), - activeConnectionObjectPath, - QLatin1String(NM_DBUS_INTERFACE_ACTIVE_CONNECTION), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QNetworkManagerConnectionActive::~QNetworkManagerConnectionActive() -{ - QDBusConnection::systemBus().disconnect(QLatin1String(NM_DBUS_SERVICE), - path(), - QLatin1String(NM_DBUS_INTERFACE_ACTIVE_CONNECTION), - QLatin1String("PropertiesChanged"), - this,SLOT(propertiesSwap(QMap<QString,QVariant>))); -} - -QDBusObjectPath QNetworkManagerConnectionActive::connection() const -{ - if (propertyMap.contains("Connection")) - return qvariant_cast<QDBusObjectPath>(propertyMap.value("Connection")); - return QDBusObjectPath(); -} - -QDBusObjectPath QNetworkManagerConnectionActive::specificObject() const -{ - if (propertyMap.contains("SpecificObject")) - return qvariant_cast<QDBusObjectPath>(propertyMap.value("SpecificObject")); - return QDBusObjectPath(); -} - -QStringList QNetworkManagerConnectionActive::devices() const -{ - QStringList list; - if (propertyMap.contains("Devices")) { - const QDBusArgument &dbusArgs = qvariant_cast<QDBusArgument>(propertyMap.value("Devices")); - QDBusObjectPath path; - - dbusArgs.beginArray(); - while (!dbusArgs.atEnd()) { - dbusArgs >> path; - list.append(path.path()); - } - dbusArgs.endArray(); - } - return list; -} - -quint32 QNetworkManagerConnectionActive::state() const -{ - if (propertyMap.contains("State")) - return propertyMap.value("State").toUInt(); - return 0; -} - -bool QNetworkManagerConnectionActive::defaultRoute() const -{ - if (propertyMap.contains("Default")) - return propertyMap.value("Default").toBool(); - return false; -} - -bool QNetworkManagerConnectionActive::default6Route() const -{ - if (propertyMap.contains("Default6")) - return propertyMap.value("Default6").toBool(); - return false; -} - -void QNetworkManagerConnectionActive::propertiesSwap(QMap<QString,QVariant> map) -{ - for (auto i = map.cbegin(), end = map.cend(); i != end; ++i) { - propertyMap.insert(i.key(),i.value()); - if (i.key() == QLatin1String("State")) { - quint32 state = i.value().toUInt(); - if (state == NM_ACTIVE_CONNECTION_STATE_ACTIVATED - || state == NM_ACTIVE_CONNECTION_STATE_DEACTIVATED) { - Q_EMIT propertiesChanged(map); - } - } - } -} - -QNetworkManagerIp4Config::QNetworkManagerIp4Config( const QString &deviceObjectPath, QObject *parent) - : QDBusAbstractInterface(QLatin1String(NM_DBUS_SERVICE), - deviceObjectPath, - NM_DBUS_INTERFACE_IP4_CONFIG, - QDBusConnection::systemBus(), parent) -{ - if (!isValid()) { - return; - } -} - -QNetworkManagerIp4Config::~QNetworkManagerIp4Config() -{ -} - -QStringList QNetworkManagerIp4Config::domains() const -{ - return property("Domains").toStringList(); -} - -QT_END_NAMESPACE - -#endif // QT_NO_DBUS |