Search
SailfishOS Open Build Service
>
Projects
>
home:kaltsi
:
tnhlbug
>
qt
> 0023-fix-connman-bearer-for-new-API.patch
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File 0023-fix-connman-bearer-for-new-API.patch of Package qt
From 8441d1a286920937edc07879ff7be7811b0b51c4 Mon Sep 17 00:00:00 2001 From: Lorn Potter <lorn.potter@jollamobile.com> Date: Wed, 5 Dec 2012 16:08:11 +1000 Subject: [PATCH 23/29] fix connman bearer for new API. back ported from qt5 sha 68db0c8567d20491aa5a34dc2ded6f6863e2152b Change-Id: Ib9cdbb6e4bdfed8420cdc2364503445924c8c57c --- .../bearer/connman/qconnmanservice_linux.cpp | 53 ++++++++++++++++++-- .../bearer/connman/qconnmanservice_linux_p.h | 13 ++++- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/src/plugins/bearer/connman/qconnmanservice_linux.cpp b/src/plugins/bearer/connman/qconnmanservice_linux.cpp index 3ee67ed..fba7770 100644 --- a/src/plugins/bearer/connman/qconnmanservice_linux.cpp +++ b/src/plugins/bearer/connman/qconnmanservice_linux.cpp @@ -57,6 +57,24 @@ #ifndef QT_NO_DBUS QT_BEGIN_NAMESPACE + + +QDBusArgument &operator<<(QDBusArgument &argument, const ConnmanMap &map) +{ + argument.beginStructure(); + argument << map.objectPath << map.propertyMap; + argument.endStructure(); + return argument; +} + +const QDBusArgument &operator>>(const QDBusArgument &argument, ConnmanMap &map) +{ + argument.beginStructure(); + argument >> map.objectPath >> map.propertyMap; + argument.endStructure(); + return argument; +} + static QDBusConnection dbusConnection = QDBusConnection::systemBus(); @@ -66,6 +84,9 @@ QConnmanManagerInterface::QConnmanManagerInterface( QObject *parent) CONNMAN_MANAGER_INTERFACE, QDBusConnection::systemBus(), parent) { + qDBusRegisterMetaType<ConnmanMap>(); + qDBusRegisterMetaType<ConnmanMapList>(); + qRegisterMetaType<ConnmanMapList>("ConnmanMapList"); } QConnmanManagerInterface::~QConnmanManagerInterface() @@ -297,14 +318,38 @@ QStringList QConnmanManagerInterface::getProfiles() QStringList QConnmanManagerInterface::getTechnologies() { - QVariant var = getProperty("Technologies"); - return qdbus_cast<QStringList >(var); + QStringList list; + QDBusReply<ConnmanMapList> replyList = this->call(QLatin1String("GetTechnologies")); + if (!replyList.error().isValid()) { + Q_FOREACH (ConnmanMap map, replyList.value()) { + list << map.objectPath.path(); + } + } else { + // try for older version + QVariant var = getProperty("Technologies"); + if (!var.isNull()) { + list = qdbus_cast<QStringList>(var); + } + } + return list; } QStringList QConnmanManagerInterface::getServices() { - QVariant var = getProperty("Services"); - return qdbus_cast<QStringList >(var); + QStringList list; + QDBusReply<ConnmanMapList> replyList = this->call(QLatin1String("GetServices")); + if (!replyList.error().isValid()) { + Q_FOREACH (ConnmanMap map, replyList.value()) { + list << map.objectPath.path(); + } + } else { + // try for older version + QVariant var = getProperty("Services"); + if (!var.isNull()) { + list = qdbus_cast<QStringList>(var); + } + } + return list; } QString QConnmanManagerInterface::getPathForTechnology(const QString &name) diff --git a/src/plugins/bearer/connman/qconnmanservice_linux_p.h b/src/plugins/bearer/connman/qconnmanservice_linux_p.h index 5a17786..041762f 100644 --- a/src/plugins/bearer/connman/qconnmanservice_linux_p.h +++ b/src/plugins/bearer/connman/qconnmanservice_linux_p.h @@ -59,6 +59,7 @@ #include <QtDBus/QDBusInterface> #include <QtDBus/QDBusMessage> #include <QtDBus/QDBusReply> +#include <QtDBus/QDBusArgument> #include <QtDBus/QDBusPendingCallWatcher> #include <QtDBus/QDBusObjectPath> @@ -90,10 +91,18 @@ QT_BEGIN_NAMESPACE -QT_END_NAMESPACE +struct ConnmanMap { + QDBusObjectPath objectPath; + QVariantMap propertyMap; +}; +Q_DECLARE_METATYPE(QT_PREPEND_NAMESPACE(ConnmanMap)); +QDBusArgument &operator<<(QDBusArgument &argument, const ConnmanMap &obj); +const QDBusArgument &operator>>(const QDBusArgument &argument, ConnmanMap &obj); + +typedef QList< ConnmanMap > ConnmanMapList; +Q_DECLARE_METATYPE(QT_PREPEND_NAMESPACE(ConnmanMapList)) -QT_BEGIN_NAMESPACE class QConnmanManagerInterface : public QDBusAbstractInterface { -- 1.7.10.3