From: Manuel Nickschas Date: Sun, 5 Sep 2010 10:04:37 +0000 (+0200) Subject: Check if the notifications client supports actions X-Git-Tag: 0.8-beta1~149 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=e7e5830395a443fe2c185385115774e6f85428f8 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. --- 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