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)
This commit is contained in:
2017-07-26 20:23:26 +03:00
parent 5e08434835
commit 5c56f813d2
6 changed files with 32 additions and 6 deletions

View File

@ -17,6 +17,9 @@
#include "awdbusadaptor.h"
#include <QDBusConnection>
#include <QDBusConnectionInterface>
#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);

View File

@ -37,6 +37,7 @@ public:
public slots:
// get methods
QStringList ActiveServices() const;
QString Info(const QString &key) const;
QStringList Keys(const QString &regexp) const;
QString Value(const QString &key) const;

View File

@ -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;

View File

@ -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();