@@ -0,0 +1,60 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "DBusGreeter.h"
18+#include "Greeter.h"
19+
20+#include <QDBusMessage>
21+#include <QStringList>
22+
23+DBusGreeter::DBusGreeter(Greeter *greeter, const QDBusConnection &connection, const QString &path)
24+ : QObject(greeter),
25+ m_greeter(greeter),
26+ m_connection(connection),
27+ m_path(path)
28+{
29+ connect(m_greeter, SIGNAL(isActiveChanged()), this, SLOT(isActiveChangedHandler()));
30+}
31+
32+bool DBusGreeter::isActive() const
33+{
34+ return m_greeter->isActive();
35+}
36+
37+void DBusGreeter::isActiveChangedHandler()
38+{
39+ notifyPropertyChanged("IsActive", isActive());
40+ Q_EMIT isActiveChanged();
41+}
42+
43+// Manually emit a PropertiesChanged signal over DBus, because QtDBus
44+// doesn't do it for us on Q_PROPERTIES, oddly enough.
45+void DBusGreeter::notifyPropertyChanged(const QString& propertyName, const QVariant &value)
46+{
47+ QDBusMessage message;
48+ QVariantMap changedProps;
49+
50+ changedProps.insert(propertyName, value);
51+
52+ message = QDBusMessage::createSignal(m_path,
53+ "org.freedesktop.DBus.Properties",
54+ "PropertiesChanged");
55+ message << "com.canonical.UnityGreeter";
56+ message << changedProps;
57+ message << QStringList();
58+
59+ m_connection.send(message);
60+}