From e1396794b5661248865981022602125d95d5b306 Mon Sep 17 00:00:00 2001 From: Jaroslav Barton Date: Sat, 14 Mar 2009 16:01:54 +0100 Subject: [PATCH] Base DBus functions --- CMakeLists.txt | 1 + src/FMDbusConn.cpp | 57 +++++++++++++++++++++++++++++++++++++----------------- src/FMDbusConn.h | 12 ++++++++++-- 3 files changed, 50 insertions(+), 20 deletions(-) rewrite src/FMDbusConn.cpp (84%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 77b594a..7b81c95 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,7 @@ SET( FPRINT_ASK_SOURCES SET( FPRINT_ASK_HEADERS ./src/FingerManagerWindow.h + ./src/FMDbusConn.h ) ADD_DEFINITIONS( -Wall -std=c++98 ) diff --git a/src/FMDbusConn.cpp b/src/FMDbusConn.cpp dissimilarity index 84% index 7dde7bd..458ae53 100644 --- a/src/FMDbusConn.cpp +++ b/src/FMDbusConn.cpp @@ -1,18 +1,39 @@ -#include - -#include "FMDbusConn.h" - - -FMDbusConn::FMDbusConn() { - QDBusReply reply = QDBusConnection::sessionBus().interface()->registeredServiceNames(); - if (!reply.isValid()) { - qDebug() << "Error:" << reply.error().message(); - exit(1); - } - foreach (QString name, reply.value()) - qDebug() << name; -}; - -FMDbusConn::~FMDbusConn() { - -} +#include + +#include +#include +#include "FMDbusConn.h" + +QDBusInterface* FMDbusConn::getManagerIface(int retr) { + if (!retr) return(0); + + qDebug("getManagerConnection try: %d", retr); + + // Connect to Fprint manager on system bus + QDBusConnection bus = QDBusConnection::systemBus(); + QDBusInterface *iface = new QDBusInterface("net.reactivated.Fprint", + "/net/reactivated/Fprint/Manager", + "net.reactivated.Fprint.Manager", + bus, this); + + // Wait while D-Bus Fprintd daemon starts + return(iface->isValid() ? iface : getManagerIface(retr-1)); +} + +FMDbusConn::FMDbusConn() : managerIface(0) { + if (!QDBusConnection::systemBus().isConnected()) { + qDebug("Cannot connect to D-Bus system bus."); + return; + } + + managerIface = getManagerIface(INTERFACE_ACQUIRE_RETRY); + if (!managerIface->isValid()) { + qDebug("D-Bus interface cannot be acquired! :-("); + } else { + qDebug("D-Bus interface acquired! :-)"); + } +}; + +FMDbusConn::~FMDbusConn() { + delete managerIface; +} diff --git a/src/FMDbusConn.h b/src/FMDbusConn.h index 172152f..ab75140 100644 --- a/src/FMDbusConn.h +++ b/src/FMDbusConn.h @@ -1,10 +1,18 @@ #ifndef FMDBUSCONN_H_ #define FMDBUSCONN_H_ -#include +#include +#include -class FMDbusConn { +#define INTERFACE_ACQUIRE_RETRY 3 +class FMDbusConn : QObject { + + Q_OBJECT + + private: + QDBusInterface *managerIface; + QDBusInterface* getManagerIface(int retr); public: FMDbusConn(); ~FMDbusConn(); -- 2.11.4.GIT