ContentTracker::ContentTracker(QObject *parent) : Plasma::DataContainer(parent) { connectToActivityManager(); QDBusServiceWatcher *watcher = new QDBusServiceWatcher("org.kde.ActivityManager", QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForOwnerChange, this); connect(watcher, SIGNAL(serviceOwnerChanged(QString,QString,QString)), this, SLOT(serviceChange(QString,QString,QString))); }
Window::Window(QWidget* parent) : QMainWindow(parent), m_playerActionGroup(new QActionGroup(this)), m_tabWidget(0), m_rootTest(0), m_rootWidget(0), m_playerTest(0), m_playerWidget(0), m_watcher(0) { m_ui.setupUi(this); connect(m_ui.action_Quit, SIGNAL(triggered()), this, SLOT(close())); connect(m_playerActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(changePlayer(QAction*))); m_timer.setInterval(2500); QDBusConnection sessionConn = QDBusConnection::sessionBus(); if (sessionConn.isConnected()) { m_watcher = new QDBusServiceWatcher(QString(), sessionConn, QDBusServiceWatcher::WatchForOwnerChange, this); connect(m_watcher, SIGNAL(serviceOwnerChanged(QString,QString,QString)), this, SLOT(serviceChange(QString,QString,QString))); QDBusConnectionInterface* bus = sessionConn.interface(); QDBusReply<QStringList> reply = bus->registeredServiceNames(); if (reply.isValid()) { QStringList services = reply.value(); foreach (const QString& name, services) { if (name.startsWith(playerPrefix)) { serviceChange(name, QString(), "dummy"); } } } else {
StatusNotifierItem::StatusNotifierItem(QWidget *parent) : StatusNotifierItemParent(parent) #if QT_VERSION >= 0x050000 , _iconThemeDir{QDir::tempPath() + QLatin1String{"/quassel-sni-XXXXXX"}} #endif { static bool registered = []() -> bool { qDBusRegisterMetaType<DBusImageStruct>(); qDBusRegisterMetaType<DBusImageVector>(); qDBusRegisterMetaType<DBusToolTipStruct>(); return true; }(); Q_UNUSED(registered) setMode(Mode::StatusNotifier); connect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(onVisibilityChanged(bool))); connect(this, SIGNAL(modeChanged(Mode)), this, SLOT(onModeChanged(Mode))); connect(this, SIGNAL(stateChanged(State)), this, SLOT(onStateChanged(State))); trayMenu()->installEventFilter(this); // Create a temporary directory that holds copies of the tray icons. That way, visualizers can find our icons. // For Qt4 the relevant icons are installed in hicolor already, so nothing to be done. #if QT_VERSION >= 0x050000 if (_iconThemeDir.isValid()) { _iconThemePath = _iconThemeDir.path(); } else { qWarning() << "Could not create temporary directory for themed tray icons!"; } #endif connect(this, SIGNAL(iconsChanged()), this, SLOT(refreshIcons())); refreshIcons(); // Our own SNI service _statusNotifierItemDBus = new StatusNotifierItemDBus(this); connect(this, SIGNAL(currentIconNameChanged()), _statusNotifierItemDBus, SIGNAL(NewIcon())); connect(this, SIGNAL(currentIconNameChanged()), _statusNotifierItemDBus, SIGNAL(NewAttentionIcon())); connect(this, SIGNAL(toolTipChanged(QString, QString)), _statusNotifierItemDBus, SIGNAL(NewToolTip())); // Service watcher to keep track of the StatusNotifierWatcher service QDBusServiceWatcher *watcher = new QDBusServiceWatcher(kSniWatcherService, QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForOwnerChange, this); connect(watcher, SIGNAL(serviceOwnerChanged(QString, QString, QString)), SLOT(serviceChange(QString, QString, QString))); // Client instance for StatusNotifierWatcher _statusNotifierWatcher = new org::kde::StatusNotifierWatcher(kSniWatcherService, kSniWatcherPath, QDBusConnection::sessionBus(), this); connect(_statusNotifierWatcher, SIGNAL(StatusNotifierHostRegistered()), SLOT(checkForRegisteredHosts())); connect(_statusNotifierWatcher, SIGNAL(StatusNotifierHostUnregistered()), SLOT(checkForRegisteredHosts())); // Client instance for notifications _notificationsClient = new org::freedesktop::Notifications(kXdgNotificationsService, kXdgNotificationsPath, QDBusConnection::sessionBus(), this); connect(_notificationsClient, SIGNAL(NotificationClosed(uint, uint)), SLOT(notificationClosed(uint, uint))); connect(_notificationsClient, SIGNAL(ActionInvoked(uint, QString)), SLOT(notificationInvoked(uint, QString))); if (_notificationsClient->isValid()) { QStringList desktopCapabilities = _notificationsClient->GetCapabilities(); _notificationsClientSupportsMarkup = desktopCapabilities.contains("body-markup"); _notificationsClientSupportsActions = desktopCapabilities.contains("actions"); } #ifdef HAVE_DBUSMENU new QuasselDBusMenuExporter(menuObjectPath(), trayMenu(), _statusNotifierItemDBus->dbusConnection()); // will be added as menu child #endif }