From 44833145103bc0802f2e6fcc9edecaa2fdafc9d9 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Sun, 5 Sep 2010 12:04:37 +0200 Subject: [PATCH] Check if the notifications client supports actions Ubuntu's notification system doesn't support actions and shows fugly popups in case apps still define them. So we check for the capability and disable actions if they're not supported. Needless to mention that the Quassel team heartily recommends using a notification daemon that is action-enabled for added value. --- src/qtui/statusnotifieritem.cpp | 5 ++++- src/qtui/statusnotifieritem.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/qtui/statusnotifieritem.cpp b/src/qtui/statusnotifieritem.cpp index 8d7972f4..7ebc0a43 100644 --- a/src/qtui/statusnotifieritem.cpp +++ b/src/qtui/statusnotifieritem.cpp @@ -72,6 +72,7 @@ void StatusNotifierItem::init() { if(_notificationsClient->isValid()) { QStringList desktopCapabilities = _notificationsClient->GetCapabilities(); _notificationsClientSupportsMarkup = desktopCapabilities.contains("body-markup"); + _notificationsClientSupportsActions = desktopCapabilities.contains("actions"); } StatusNotifierItemParent::init(); @@ -230,7 +231,9 @@ void StatusNotifierItem::showMessage(const QString &title, const QString &messag if(_notificationsClientSupportsMarkup) message = Qt::escape(message); - QStringList actions = QStringList() << "activate" << "View"; + QStringList actions; + if(_notificationsClientSupportsActions) + actions << "activate" << "View"; // we always queue notifications right now QDBusReply reply = _notificationsClient->Notify(title, 0, "quassel", title, message, actions, QVariantMap(), timeout); diff --git a/src/qtui/statusnotifieritem.h b/src/qtui/statusnotifieritem.h index 1ca4e4a4..ee3bc6d7 100644 --- a/src/qtui/statusnotifieritem.h +++ b/src/qtui/statusnotifieritem.h @@ -82,6 +82,7 @@ private: org::kde::StatusNotifierWatcher *_statusNotifierWatcher; org::freedesktop::Notifications *_notificationsClient; bool _notificationsClientSupportsMarkup; + bool _notificationsClientSupportsActions; quint32 _lastNotificationsDBusId; QHash _notificationsIdMap; ///< Maps our own notification ID to the D-Bus one -- 2.20.1