summaryrefslogtreecommitdiffstats
path: root/src/plugins/bearer/connman
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@jollamobile.com>2012-12-07 07:41:44 +1000
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-12-20 01:42:05 +0100
commit2efccfeeef70ebd8a2db2ebccb3c63722ae76e1f (patch)
tree369bdd18695e66dda885122479246c9f6b26f104 /src/plugins/bearer/connman
parent12b68e817f58d001e294b388b7f9b8963d41fa0b (diff)
Update connman bearer plugin for changed connman API.
This should also remain working for previous connman Change-Id: I5f0a1947f11948b202391ba0c256067faa01ce6d Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/plugins/bearer/connman')
-rw-r--r--src/plugins/bearer/connman/qconnmanservice_linux.cpp48
-rw-r--r--src/plugins/bearer/connman/qconnmanservice_linux_p.h13
2 files changed, 56 insertions, 5 deletions
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<QStringList >(var);
+ QStringList list;
+ QDBusReply<ConnmanMapList> 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<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.isValid()) {
+ Q_FOREACH (ConnmanMap map, replyList.value()) {
+ list << map.objectPath.path();
+ }
+ } else {
+ 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 be2063f8e8..3ed66f4769 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,11 +91,23 @@
QT_BEGIN_NAMESPACE
+struct ConnmanMap {
+ QDBusObjectPath objectPath;
+ QVariantMap propertyMap;
+};
+
+typedef QList< ConnmanMap > ConnmanMapList;
+
QT_END_NAMESPACE
+Q_DECLARE_METATYPE(QT_PREPEND_NAMESPACE(ConnmanMap))
+Q_DECLARE_METATYPE(QT_PREPEND_NAMESPACE(ConnmanMapList))
QT_BEGIN_NAMESPACE
+QDBusArgument &operator<<(QDBusArgument &argument, const ConnmanMap &obj);
+const QDBusArgument &operator>>(const QDBusArgument &argument, ConnmanMap &obj);
+
class QConnmanManagerInterface : public QDBusAbstractInterface
{
Q_OBJECT