@@ -28,19 +28,13 @@
2828#include <QTimer>
2929
3030DBusInterface::DBusInterface(LauncherModel *parent):
31− QDBusVirtualObject(parent),
31+ UnityDBusVirtualObject("/com/canonical/Unity/Launcher", "com.canonical.Unity.Launcher", parent),
3232 m_launcherModel(parent)
3333{
34− // Use a zero-timer to let Qml finish loading before we announce on DBus
35− QTimer::singleShot(0, this, SLOT(registerDBus()));
3634}
3735
3836DBusInterface::~DBusInterface()
3937{
40− /* Remove oursevles from DBus */
41− QDBusConnection con = QDBusConnection::sessionBus();
42− con.unregisterService("com.canonical.Unity.Launcher");
43− con.unregisterObject("/com/canonical/Unity/Launcher");
4438}
4539
4640QString DBusInterface::introspect(const QString &path) const
@@ -181,13 +175,13 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
181175 int newCount = message.arguments()[2].toInt();
182176 if (!item || newCount != item->count()) {
183177 Q_EMIT countChanged(appid, newCount);
184− emitPropChangedDbus(appid, "count", QVariant(newCount));
178+ notifyPropertyChanged("com.canonical.Unity.Launcher.Item", encodeAppId(appid), "count", QVariant(newCount));
185179 }
186180 } else if (message.arguments()[1].toString() == "countVisible") {
187181 bool newVisible = message.arguments()[2].toBool();
188182 if (!item || newVisible != item->countVisible()) {
189183 Q_EMIT countVisibleChanged(appid, newVisible);
190− emitPropChangedDbus(appid, "countVisible", newVisible);
184+ notifyPropertyChanged("com.canonical.Unity.Launcher.Item", encodeAppId(appid), "countVisible", newVisible);
191185 }
192186 }
193187 } else if (message.member() == "GetAll") {
@@ -204,36 +198,3 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
204198 QDBusMessage reply = message.createReply(retval);
205199 return connection.send(reply);
206200}
207−
208−void DBusInterface::emitPropChangedDbus(const QString& appId, const QString& property, const QVariant &value)
209−{
210− QString path("/com/canonical/Unity/Launcher/");
211− path.append(encodeAppId(appId));
212−
213− QDBusMessage message = QDBusMessage::createSignal(path, "org.freedesktop.DBus.Properties", "PropertiesChanged");
214−
215− QList<QVariant> arguments;
216− QVariantHash changedprops;
217− changedprops[property] = QVariant::fromValue(QDBusVariant(value));
218− QVariantList deletedprops;
219−
220− arguments.append(changedprops);
221− arguments.append(deletedprops);
222−
223− message.setArguments(arguments);
224−
225− QDBusConnection con = QDBusConnection::sessionBus();
226− con.send(message);
227−}
228−
229−void DBusInterface::registerDBus()
230−{
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";
235− }
236− if (!con.registerVirtualObject("/com/canonical/Unity/Launcher", this, QDBusConnection::VirtualObjectRegisterOption::SubPath)) {
237− qWarning() << "Unable to register launcher object";
238− }
239−}