diff options
author | Lorn Potter <lorn.potter@jollamobile.com> | 2014-10-07 17:18:09 +1000 |
---|---|---|
committer | Lorn Potter <lorn.potter@gmail.com> | 2014-10-21 01:01:12 +0200 |
commit | 520b10be4cab66f3f66d3692d0bbbef57eff09e1 (patch) | |
tree | 48efd3fc95f7d26435cc07e313635ad98f35b96a /src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp | |
parent | 151061ad4af9d1b844f0b029b4e84a3577487048 (diff) |
Add better mobile connections to QtBearer NetworkManager backend.
Task-number: QTBUG-41807
Change-Id: Ifb5904d4887111416b4bb1a32d6d056029186f5c
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Diffstat (limited to 'src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp')
-rw-r--r-- | src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp index a7d1289b38..d154f1187e 100644 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp +++ b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp @@ -568,6 +568,81 @@ quint32 QNetworkManagerInterfaceDeviceWireless::wirelessCapabilities() const return d->connectionInterface->property("WirelelessCapabilities").toUInt(); } +class QNetworkManagerInterfaceDeviceModemPrivate +{ +public: + QDBusInterface *connectionInterface; + QString path; + bool valid; +}; + +QNetworkManagerInterfaceDeviceModem::QNetworkManagerInterfaceDeviceModem(const QString &ifaceDevicePath, QObject *parent) + : QObject(parent), nmDBusHelper(0) +{ + d = new QNetworkManagerInterfaceDeviceModemPrivate(); + d->path = ifaceDevicePath; + d->connectionInterface = new QDBusInterface(QLatin1String(NM_DBUS_SERVICE), + d->path, + QLatin1String(NM_DBUS_INTERFACE_DEVICE_MODEM), + QDBusConnection::systemBus(), parent); + if (!d->connectionInterface->isValid()) { + d->valid = false; + return; + } + d->valid = true; +} + +QNetworkManagerInterfaceDeviceModem::~QNetworkManagerInterfaceDeviceModem() +{ + delete d->connectionInterface; + delete d; +} + +bool QNetworkManagerInterfaceDeviceModem::isValid() +{ + + return d->valid; +} + +bool QNetworkManagerInterfaceDeviceModem::setConnections() +{ + if (!isValid() ) + return false; + + bool allOk = false; + + delete nmDBusHelper; + nmDBusHelper = new QNmDBusHelper(this); + connect(nmDBusHelper, SIGNAL(pathForPropertiesChanged(QString,QMap<QString,QVariant>)), + this,SIGNAL(propertiesChanged(QString,QMap<QString,QVariant>))); + if (QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE), + d->path, + QLatin1String(NM_DBUS_INTERFACE_DEVICE_MODEM), + QLatin1String("PropertiesChanged"), + nmDBusHelper,SLOT(slotDevicePropertiesChanged(QMap<QString,QVariant>))) ) { + allOk = true; + } + return allOk; +} + +QDBusInterface *QNetworkManagerInterfaceDeviceModem::connectionInterface() const +{ + return d->connectionInterface; +} + +quint32 QNetworkManagerInterfaceDeviceModem::modemCapabilities() const +{ + return d->connectionInterface->property("ModemCapabilities").toUInt(); +} + +quint32 QNetworkManagerInterfaceDeviceModem::currentCapabilities() const +{ + return d->connectionInterface->property("CurrentCapabilities").toUInt(); +} + + + + class QNetworkManagerSettingsPrivate { public: |