@@ -16,9 +16,17 @@
16 * Author: Michael Terry <michael.terry@canonical.com>
16 * Author: Michael Terry <michael.terry@canonical.com>
19+#include "DBusGreeter.h"
20+#include "DBusGreeterList.h"
19#include "Greeter.h"
21#include "Greeter.h"
20#include <libintl.h>
22#include <libintl.h>
21#include <QLightDM/Greeter>
23#include <QLightDM/Greeter>
26+static const char* GREETER_DBUS_PATH = "/";
27+static const char* GREETER_LIST_DBUS_PATH = "/list";
28+static const char* GREETER_DBUS_SERVICE = "com.canonical.UnityGreeter";
23class GreeterPrivate
31class GreeterPrivate
@@ -61,6 +69,9 @@ Greeter::Greeter(QObject* parent)
61 this, SLOT(authenticationCompleteFilter()));
69 this, SLOT(authenticationCompleteFilter()));
63 d->m_greeter->connectSync();
71 d->m_greeter->connectSync();
73+ // Use a zero-timer to let Qml finish loading before we announce on DBus
74+ QTimer::singleShot(0, this, SLOT(registerDBus()));
66bool Greeter::isActive() const
77bool Greeter::isActive() const
@@ -154,3 +165,13 @@ void Greeter::authenticationCompleteFilter()
154 Q_EMIT isAuthenticatedChanged();
165 Q_EMIT isAuthenticatedChanged();
155 Q_EMIT authenticationComplete();
166 Q_EMIT authenticationComplete();
169+void Greeter::registerDBus()
171+ QDBusConnection connection = QDBusConnection::sessionBus();
172+ DBusGreeter *root = new DBusGreeter(this, connection, GREETER_DBUS_PATH);
173+ connection.registerObject(GREETER_DBUS_PATH, root, QDBusConnection::ExportScriptableContents);
174+ DBusGreeterList *list = new DBusGreeterList(this, connection, GREETER_LIST_DBUS_PATH);
175+ connection.registerObject(GREETER_LIST_DBUS_PATH, list, QDBusConnection::ExportScriptableContents);
176+ connection.registerService(GREETER_DBUS_SERVICE);