From e7e5830395a443fe2c185385115774e6f85428f8 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 2a58db86..ce3d3d88 100644 --- a/src/qtui/statusnotifieritem.cpp +++ b/src/qtui/statusnotifieritem.cpp @@ -105,6 +105,7 @@ void StatusNotifierItem::init() { if(_notificationsClient->isValid()) { QStringList desktopCapabilities = _notificationsClient->GetCapabilities(); _notificationsClientSupportsMarkup = desktopCapabilities.contains("body-markup"); + _notificationsClientSupportsActions = desktopCapabilities.contains("actions"); } StatusNotifierItemParent::init(); @@ -274,7 +275,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 d8489d83..016f4516 100644 --- a/src/qtui/statusnotifieritem.h +++ b/src/qtui/statusnotifieritem.h @@ -86,6 +86,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