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.6.2~1 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=44833145103bc0802f2e6fcc9edecaa2fdafc9d9;hp=ba9fdf3ef19a32ebb380fbff01362f4fedc0d12d 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 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