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;hp=0ec85b3e2ce83908af510a25d40eb2b9a0f0ffed 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