X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fknotificationbackend.cpp;h=68717cd4717fd22623fd00480cbc1275691ff0d2;hp=1b09927a782a4cb06b44e9c7327205e696fbb4b2;hb=HEAD;hpb=eaa1bd30bc088e5cae6d8a742d7aedb3d8ff1897 diff --git a/src/qtui/knotificationbackend.cpp b/src/qtui/knotificationbackend.cpp index 1b09927a..903446ac 100644 --- a/src/qtui/knotificationbackend.cpp +++ b/src/qtui/knotificationbackend.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 by the Quassel Project * + * Copyright (C) 2005-2022 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -20,70 +20,75 @@ #include "knotificationbackend.h" -#include #include #include -#ifdef HAVE_KDE4 -# include -# include -#else -# include -# include -#endif +#include +#include +#include #include "client.h" +#include "icon.h" #include "mainwin.h" #include "networkmodel.h" #include "qtui.h" +#include "util.h" -KNotificationBackend::KNotificationBackend(QObject *parent) +KNotificationBackend::KNotificationBackend(QObject* parent) : AbstractNotificationBackend(parent) { - connect(QtUi::mainWindow()->systemTray(), SIGNAL(activated(SystemTray::ActivationReason)), - SLOT(notificationActivated(SystemTray::ActivationReason))); + connect(QtUi::mainWindow()->systemTray(), + &SystemTray::activated, + this, + selectOverload(&KNotificationBackend::notificationActivated)); updateToolTip(); } - -void KNotificationBackend::notify(const Notification &n) +void KNotificationBackend::notify(const Notification& n) { QString type; switch (n.type) { case Highlight: - type = "Highlight"; break; + type = "Highlight"; + break; case HighlightFocused: - type = "HighlightFocused"; break; + type = "HighlightFocused"; + break; case PrivMsg: - type = "PrivMsg"; break; + type = "PrivMsg"; + break; case PrivMsgFocused: - type = "PrivMsgFocused"; break; + type = "PrivMsgFocused"; + break; } -#if QT_VERSION < 0x050000 - QString message = QString("<%1> %2").arg(n.sender, Qt::escape(n.message)); -#else QString message = QString("<%1> %2").arg(n.sender, n.message.toHtmlEscaped()); + KNotification* notification = KNotification::event(type, + message, + QStringLiteral("dialog-information"), + QtUi::mainWindow(), + KNotification::RaiseWidgetOnActivation | KNotification::CloseWhenWidgetActivated + | KNotification::CloseOnTimeout); + connect(notification, + selectOverload(&KNotification::activated), + this, + selectOverload<>(&KNotificationBackend::notificationActivated)); +#if KNOTIFICATIONS_VERSION >= QT_VERSION_CHECK(5,31,0) + notification->setDefaultAction(tr("View")); +#else + notification->setActions(QStringList{tr("View")}); #endif - KNotification *notification = KNotification::event(type, message, QIcon::fromTheme("dialog-information").pixmap(48), QtUi::mainWindow(), - KNotification::RaiseWidgetOnActivation - |KNotification::CloseWhenWidgetActivated - |KNotification::CloseOnTimeout); - connect(notification, SIGNAL(activated(uint)), SLOT(notificationActivated())); - notification->setActions(QStringList("View")); notification->setProperty("notificationId", n.notificationId); _notifications.append(qMakePair(n.notificationId, QPointer(notification))); updateToolTip(); - QtUi::mainWindow()->systemTray()->setAlert(true); } - void KNotificationBackend::removeNotificationById(uint notificationId) { - QList > >::iterator i = _notifications.begin(); + QList>>::iterator i = _notifications.begin(); while (i != _notifications.end()) { if (i->first == notificationId) { if (i->second) @@ -96,26 +101,22 @@ void KNotificationBackend::removeNotificationById(uint notificationId) updateToolTip(); } - void KNotificationBackend::close(uint notificationId) { removeNotificationById(notificationId); - //if(!_notifications.count()) // FIXME make configurable - QtUi::mainWindow()->systemTray()->setAlert(false); + // if(!_notifications.count()) // FIXME make configurable } - void KNotificationBackend::notificationActivated() { uint id = 0; - KNotification *n = qobject_cast(sender()); + KNotification* n = qobject_cast(sender()); if (n) id = n->property("notificationId").toUInt(); notificationActivated(id); } - void KNotificationBackend::notificationActivated(SystemTray::ActivationReason reason) { if (reason == SystemTray::Trigger) { @@ -126,52 +127,47 @@ void KNotificationBackend::notificationActivated(SystemTray::ActivationReason re } } - void KNotificationBackend::notificationActivated(uint notificationId) { emit activated(notificationId); } - void KNotificationBackend::updateToolTip() { QtUi::mainWindow()->systemTray()->setToolTip("Quassel IRC", - _notifications.count() ? tr("%n pending highlight(s)", "", _notifications.count()) : QString()); + _notifications.count() ? tr("%n pending highlight(s)", "", _notifications.count()) + : QString()); } - -SettingsPage *KNotificationBackend::createConfigWidget() const +SettingsPage* KNotificationBackend::createConfigWidget() const { return new ConfigWidget(); } - /***************************************************************************/ -KNotificationBackend::ConfigWidget::ConfigWidget(QWidget *parent) : SettingsPage("Internal", "KNotification", parent) +KNotificationBackend::ConfigWidget::ConfigWidget(QWidget* parent) + : SettingsPage("Internal", "KNotification", parent) { _widget = new KNotifyConfigWidget(this); _widget->setApplication("quassel"); - QVBoxLayout *layout = new QVBoxLayout(this); + QVBoxLayout* layout = new QVBoxLayout(this); layout->addWidget(_widget); - connect(_widget, SIGNAL(changed(bool)), SLOT(widgetChanged(bool))); + connect(_widget, &KNotifyConfigWidget::changed, this, &ConfigWidget::widgetChanged); } - void KNotificationBackend::ConfigWidget::widgetChanged(bool changed) { setChangedState(changed); } - void KNotificationBackend::ConfigWidget::load() { setChangedState(false); } - void KNotificationBackend::ConfigWidget::save() { _widget->save();