X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fknotificationbackend.cpp;h=5282bd777785434f902d6dc70d8f50bc7e0ee0e0;hp=95332a05a1206731243f8f4f2f97e1abbc86e962;hb=HEAD;hpb=f3d6f8088d8be6af9319a99fb8d2fee2837b540a diff --git a/src/qtui/knotificationbackend.cpp b/src/qtui/knotificationbackend.cpp index 95332a05..903446ac 100644 --- a/src/qtui/knotificationbackend.cpp +++ b/src/qtui/knotificationbackend.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 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 * @@ -18,66 +18,77 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include -#include -#include +#include "knotificationbackend.h" + #include #include -#include "knotificationbackend.h" +#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) @@ -90,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) { @@ -120,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();