From 5c56f813d28ffed8c0b0fca812721ea51cf88b57 Mon Sep 17 00:00:00 2001 From: Evgeniy Alekseev Date: Wed, 26 Jul 2017 20:23:26 +0300 Subject: [PATCH] make tests great again! Also dbus adaptor has been renamed, because it does not allow to register one service for several applications (like plasmashell and plasmawindowed) --- .../awesome-widget/plugin/awdbusadaptor.cpp | 22 +++++++++++++++++++ sources/awesome-widget/plugin/awdbusadaptor.h | 1 + sources/awesome-widget/plugin/awkeycache.cpp | 5 ++--- sources/awesome-widget/plugin/awkeys.cpp | 6 +++-- sources/test/testawkeys.cpp | 3 ++- sources/version.h.in | 1 + 6 files changed, 32 insertions(+), 6 deletions(-) diff --git a/sources/awesome-widget/plugin/awdbusadaptor.cpp b/sources/awesome-widget/plugin/awdbusadaptor.cpp index b5258b1..db6b545 100644 --- a/sources/awesome-widget/plugin/awdbusadaptor.cpp +++ b/sources/awesome-widget/plugin/awdbusadaptor.cpp @@ -17,6 +17,9 @@ #include "awdbusadaptor.h" +#include +#include + #include "awdebug.h" #include "awkeys.h" @@ -35,6 +38,25 @@ AWDBusAdaptor::~AWDBusAdaptor() } +QStringList AWDBusAdaptor::ActiveServices() const +{ + QDBusMessage listServices = QDBusConnection::sessionBus().interface()->call( + QDBus::BlockWithGui, "ListNames"); + if (listServices.arguments().isEmpty()) { + qCWarning(LOG_DBUS) << "Could not find any DBus service"; + return {}; + } + QStringList arguments = listServices.arguments().first().toStringList(); + + return std::accumulate(arguments.cbegin(), arguments.cend(), QStringList(), + [](QStringList &source, QString service) { + if (service.startsWith(AWDBUS_SERVICE)) + source.append(service); + return source; + }); +} + + QString AWDBusAdaptor::Info(const QString &key) const { return m_plugin->infoByKey(key); diff --git a/sources/awesome-widget/plugin/awdbusadaptor.h b/sources/awesome-widget/plugin/awdbusadaptor.h index 5ff888e..f73110f 100644 --- a/sources/awesome-widget/plugin/awdbusadaptor.h +++ b/sources/awesome-widget/plugin/awdbusadaptor.h @@ -37,6 +37,7 @@ public: public slots: // get methods + QStringList ActiveServices() const; QString Info(const QString &key) const; QStringList Keys(const QString ®exp) const; QString Value(const QString &key) const; diff --git a/sources/awesome-widget/plugin/awkeycache.cpp b/sources/awesome-widget/plugin/awkeycache.cpp index d72de54..e6a9f91 100644 --- a/sources/awesome-widget/plugin/awkeycache.cpp +++ b/sources/awesome-widget/plugin/awkeycache.cpp @@ -147,9 +147,8 @@ QStringList AWKeyCache::getRequiredKeys(const QStringList &_keys, used << "swapgb" << "swapfreegb"; // network keys - QStringList netKeys({"up", "upkb", "uptot", "uptotkb", "upunits", - "down", "downkb", "downtot", "downtotkb", - "downunits"}); + QStringList netKeys({"up", "upkb", "uptot", "uptotkb", "upunits", "down", + "downkb", "downtot", "downtotkb", "downunits"}); for (auto &key : netKeys) { if (!used.contains(key)) continue; diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp index 385f2e1..b069921 100644 --- a/sources/awesome-widget/plugin/awkeys.cpp +++ b/sources/awesome-widget/plugin/awkeys.cpp @@ -327,10 +327,12 @@ void AWKeys::createDBusInterface() // create session QDBusConnection bus = QDBusConnection::sessionBus(); - if (!bus.registerService(AWDBUS_SERVICE)) + // HACK we are going to use different services because it binds to + // application + if (!bus.registerService(QString("%1.i%2").arg(AWDBUS_SERVICE).arg(id))) qCWarning(LOG_AW) << "Could not register DBus service, last error" << bus.lastError().message(); - if (!bus.registerObject(QString("/%1").arg(id), new AWDBusAdaptor(this), + if (!bus.registerObject(AWDBUS_PATH, new AWDBusAdaptor(this), QDBusConnection::ExportAllContents)) qCWarning(LOG_AW) << "Could not register DBus object, last error" << bus.lastError().message(); diff --git a/sources/test/testawkeys.cpp b/sources/test/testawkeys.cpp index c55d2d7..639bfa0 100644 --- a/sources/test/testawkeys.cpp +++ b/sources/test/testawkeys.cpp @@ -174,7 +174,8 @@ void TestAWKeys::test_dbus() // create connection and message QDBusConnection bus = QDBusConnection::sessionBus(); QDBusMessage request = QDBusMessage::createMethodCall( - AWDBUS_SERVICE, QString("/%1").arg(id), AWDBUS_SERVICE, "WhoAmI"); + QString("%1.i%2").arg(AWDBUS_SERVICE).arg(id), AWDBUS_PATH, + AWDBUS_SERVICE, "WhoAmI"); // send message to dbus QDBusMessage response = bus.call(request, QDBus::BlockWithGui); diff --git a/sources/version.h.in b/sources/version.h.in index c0c3f91..56d4ec4 100644 --- a/sources/version.h.in +++ b/sources/version.h.in @@ -44,6 +44,7 @@ const int AW_TELEMETRY_API = 1; // use define here instead of normal const definition for moc #define AWDBUS_SERVICE_NAME "org.kde.plasma.awesomewidget" const char AWDBUS_SERVICE[] = AWDBUS_SERVICE_NAME; +const char AWDBUS_PATH[] = "/awesomewidgets"; // network requests timeout, ms const int REQUEST_TIMEOUT = 3000; // available time keys