From 2efccfeeef70ebd8a2db2ebccb3c63722ae76e1f Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Fri, 7 Dec 2012 07:41:44 +1000 Subject: Update connman bearer plugin for changed connman API. This should also remain working for previous connman Change-Id: I5f0a1947f11948b202391ba0c256067faa01ce6d Reviewed-by: Lorn Potter Reviewed-by: Robin Burchell Reviewed-by: Thiago Macieira --- .../bearer/connman/qconnmanservice_linux.cpp | 48 +++++++++++++++++++--- 1 file changed, 43 insertions(+), 5 deletions(-) (limited to 'src/plugins/bearer/connman/qconnmanservice_linux.cpp') diff --git a/src/plugins/bearer/connman/qconnmanservice_linux.cpp b/src/plugins/bearer/connman/qconnmanservice_linux.cpp index 46757ab021..dbfac6b438 100644 --- a/src/plugins/bearer/connman/qconnmanservice_linux.cpp +++ b/src/plugins/bearer/connman/qconnmanservice_linux.cpp @@ -57,9 +57,24 @@ #ifndef QT_NO_DBUS QT_BEGIN_NAMESPACE -static QDBusConnection dbusConnection = QDBusConnection::systemBus(); +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(); QConnmanManagerInterface::QConnmanManagerInterface( QObject *parent) : QDBusAbstractInterface(QLatin1String(CONNMAN_SERVICE), QLatin1String(CONNMAN_MANAGER_PATH), @@ -301,14 +316,37 @@ QStringList QConnmanManagerInterface::getProfiles() QStringList QConnmanManagerInterface::getTechnologies() { - QVariant var = getProperty("Technologies"); - return qdbus_cast(var); + QStringList list; + QDBusReply replyList = this->call(QLatin1String("GetTechnologies")); + if (replyList.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(var); + } + } + return list; } QStringList QConnmanManagerInterface::getServices() { - QVariant var = getProperty("Services"); - return qdbus_cast(var); + QStringList list; + QDBusReply replyList = this->call(QLatin1String("GetServices")); + if (replyList.isValid()) { + Q_FOREACH (ConnmanMap map, replyList.value()) { + list << map.objectPath.path(); + } + } else { + QVariant var = getProperty("Services"); + if (!var.isNull()) { + list = qdbus_cast(var); + } + } + return list; } QString QConnmanManagerInterface::getPathForTechnology(const QString &name) -- cgit v1.2.3