add dbus session prototype

This commit is contained in:
2016-10-21 08:10:29 +03:00
parent 7568ae2a3b
commit c103986f37
9 changed files with 124 additions and 2 deletions

View File

@ -17,7 +17,8 @@
#include "awkeys.h"
#include <QJSEngine>
#include <QDBusConnection>
#include <QDBusError>
#include <QRegExp>
#include <QThread>
#include <QTimer>
@ -25,6 +26,7 @@
#include "awdataaggregator.h"
#include "awdataengineaggregator.h"
#include "awdbusadaptor.h"
#include "awdebug.h"
#include "awkeycache.h"
#include "awkeyoperations.h"
@ -52,6 +54,8 @@ AWKeys::AWKeys(QObject *parent)
m_timer = new QTimer(this);
m_timer->setSingleShot(false);
createDBusInterface();
// update key data if required
connect(m_keyOperator, SIGNAL(updateKeys(QStringList)), this,
SLOT(reinitKeys(QStringList)));
@ -74,6 +78,11 @@ AWKeys::~AWKeys()
m_timer->stop();
delete m_timer;
// delete dbus session
long id = reinterpret_cast<long>(this);
QDBusConnection::sessionBus().unregisterObject(QString("/%1").arg(id));
QDBusConnection::sessionBus().unregisterService(AWDBUS_SERVICE);
// core
delete m_dataEngineAggregator;
delete m_threadPool;
@ -319,6 +328,23 @@ void AWKeys::calculateValues()
}
void AWKeys::createDBusInterface()
{
// get this object id
long id = reinterpret_cast<long>(this);
// create session
QDBusConnection bus = QDBusConnection::sessionBus();
if (!bus.registerService(AWDBUS_SERVICE))
qCWarning(LOG_AW) << "Could not register DBus service, last error"
<< bus.lastError().message();
if (!bus.registerObject(QString("/%1").arg(id), new AWDBusAdaptor(this),
QDBusConnection::ExportAllContents))
qCWarning(LOG_AW) << "Could not register DBus object, last error"
<< bus.lastError().message();
}
QString AWKeys::parsePattern(QString pattern) const
{
// screen sign