@@ -28,19 +28,13 @@
28#include <QTimer>
28#include <QTimer>
30DBusInterface::DBusInterface(LauncherModel *parent):
30DBusInterface::DBusInterface(LauncherModel *parent):
31− QDBusVirtualObject(parent),
31+ UnityDBusVirtualObject("/com/canonical/Unity/Launcher", "com.canonical.Unity.Launcher", parent),
32 m_launcherModel(parent)
32 m_launcherModel(parent)
34− // Use a zero-timer to let Qml finish loading before we announce on DBus
35− QTimer::singleShot(0, this, SLOT(registerDBus()));
38DBusInterface::~DBusInterface()
36DBusInterface::~DBusInterface()
40− /* Remove oursevles from DBus */
41− QDBusConnection con = QDBusConnection::sessionBus();
42− con.unregisterService("com.canonical.Unity.Launcher");
43− con.unregisterObject("/com/canonical/Unity/Launcher");
46QString DBusInterface::introspect(const QString &path) const
40QString DBusInterface::introspect(const QString &path) const
@@ -181,13 +175,13 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
181 int newCount = message.arguments()[2].toInt();
175 int newCount = message.arguments()[2].toInt();
182 if (!item || newCount != item->count()) {
176 if (!item || newCount != item->count()) {
183 Q_EMIT countChanged(appid, newCount);
177 Q_EMIT countChanged(appid, newCount);
184− emitPropChangedDbus(appid, "count", QVariant(newCount));
178+ notifyPropertyChanged("com.canonical.Unity.Launcher.Item", encodeAppId(appid), "count", QVariant(newCount));
186 } else if (message.arguments()[1].toString() == "countVisible") {
180 } else if (message.arguments()[1].toString() == "countVisible") {
187 bool newVisible = message.arguments()[2].toBool();
181 bool newVisible = message.arguments()[2].toBool();
188 if (!item || newVisible != item->countVisible()) {
182 if (!item || newVisible != item->countVisible()) {
189 Q_EMIT countVisibleChanged(appid, newVisible);
183 Q_EMIT countVisibleChanged(appid, newVisible);
190− emitPropChangedDbus(appid, "countVisible", newVisible);
184+ notifyPropertyChanged("com.canonical.Unity.Launcher.Item", encodeAppId(appid), "countVisible", newVisible);
193 } else if (message.member() == "GetAll") {
187 } else if (message.member() == "GetAll") {
@@ -204,36 +198,3 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
204 QDBusMessage reply = message.createReply(retval);
198 QDBusMessage reply = message.createReply(retval);
205 return connection.send(reply);
199 return connection.send(reply);
208−void DBusInterface::emitPropChangedDbus(const QString& appId, const QString& property, const QVariant &value)
210− QString path("/com/canonical/Unity/Launcher/");
211− path.append(encodeAppId(appId));
213− QDBusMessage message = QDBusMessage::createSignal(path, "org.freedesktop.DBus.Properties", "PropertiesChanged");
215− QList<QVariant> arguments;
216− QVariantHash changedprops;
217− changedprops[property] = QVariant::fromValue(QDBusVariant(value));
218− QVariantList deletedprops;
220− arguments.append(changedprops);
221− arguments.append(deletedprops);
223− message.setArguments(arguments);
225− QDBusConnection con = QDBusConnection::sessionBus();
229−void DBusInterface::registerDBus()
231− /* Set up ourselves on DBus */
232− QDBusConnection con = QDBusConnection::sessionBus();
233− if (!con.registerService("com.canonical.Unity.Launcher")) {
234− qWarning() << "Unable to register launcher name";
236− if (!con.registerVirtualObject("/com/canonical/Unity/Launcher", this, QDBusConnection::VirtualObjectRegisterOption::SubPath)) {
237− qWarning() << "Unable to register launcher object";