36QDBusMenuConnection::QDBusMenuConnection(QObject *parent,
const QString &serviceName)
38 , m_serviceName(serviceName)
39 , m_connection(serviceName.isNull() ? QDBusConnection::sessionBus()
40 : QDBusConnection::connectToBus(QDBusConnection::SessionBus, serviceName))
41 , m_dbusWatcher(
new QDBusServiceWatcher(StatusNotifierWatcherService, m_connection, QDBusServiceWatcher::WatchForRegistration,
this))
42 , m_watcherRegistered(
false)
44#ifndef QT_NO_SYSTEMTRAYICON
46 if (m_connection.interface()->isServiceRegistered(StatusNotifierWatcherService))
47 m_watcherRegistered =
true;
49 qCDebug(qLcMenu) <<
"failed to find service" << StatusNotifierWatcherService;
79bool QDBusMenuConnection::registerTrayIcon(QDBusTrayIcon *item)
81 bool success = connection().registerObject(StatusNotifierItemPath, item);
83 unregisterTrayIcon(item);
84 qWarning() <<
"failed to register" << item->instanceId() << StatusNotifierItemPath;
89 registerTrayIconMenu(item);
91 return registerTrayIconWithWatcher(item);
94bool QDBusMenuConnection::registerTrayIconWithWatcher(QDBusTrayIcon *item)
97 QDBusMessage registerMethod = QDBusMessage::createMethodCall(
98 StatusNotifierWatcherService, StatusNotifierWatcherPath, StatusNotifierWatcherService,
99 "RegisterStatusNotifierItem"_L1);
100 registerMethod.setArguments(QVariantList() << m_connection.baseService());
101 return m_connection.callWithCallback(registerMethod,
this, SIGNAL(trayIconRegistered()), SLOT(dbusError(QDBusError)));