X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsystraynotificationbackend.cpp;h=4e024daf9eddeb81ea0da2e1313c9c495c870a77;hp=5492f0a2d1299b7e226543367693b524bce48114;hb=2c8434f74c68194d56f2084f637419123e61d18b;hpb=9d54503555534a2c554f09a33df6afa33d6308ec diff --git a/src/qtui/systraynotificationbackend.cpp b/src/qtui/systraynotificationbackend.cpp index 5492f0a2..4e024daf 100644 --- a/src/qtui/systraynotificationbackend.cpp +++ b/src/qtui/systraynotificationbackend.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,33 +18,31 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ +#include "systraynotificationbackend.h" + #include #include #include #include -#include "systraynotificationbackend.h" - #include "client.h" #include "clientsettings.h" #include "icon.h" -#include "iconloader.h" #include "mainwin.h" #include "networkmodel.h" #include "qtui.h" #include "systemtray.h" SystrayNotificationBackend::SystrayNotificationBackend(QObject *parent) - : AbstractNotificationBackend(parent), - _blockActivation(false) + : AbstractNotificationBackend(parent) { NotificationSettings notificationSettings; - notificationSettings.initAndNotify("Systray/ShowBubble", this, SLOT(showBubbleChanged(QVariant)), true); - notificationSettings.initAndNotify("Systray/Animate", this, SLOT(animateChanged(QVariant)), true); + notificationSettings.initAndNotify("Systray/ShowBubble", this, &SystrayNotificationBackend::showBubbleChanged, true); - connect(QtUi::mainWindow()->systemTray(), SIGNAL(messageClicked(uint)), SLOT(notificationActivated(uint))); - connect(QtUi::mainWindow()->systemTray(), SIGNAL(activated(SystemTray::ActivationReason)), - SLOT(notificationActivated(SystemTray::ActivationReason))); + connect(QtUi::mainWindow()->systemTray(), &SystemTray::messageClicked, + this, selectOverload(&SystrayNotificationBackend::onNotificationActivated)); + connect(QtUi::mainWindow()->systemTray(), &SystemTray::activated, + this, selectOverload(&SystrayNotificationBackend::onNotificationActivated)); QApplication::instance()->installEventFilter(this); @@ -64,9 +62,6 @@ void SystrayNotificationBackend::notify(const Notification &n) QtUi::mainWindow()->systemTray()->showMessage(title, message, SystemTray::Information, 10000, n.notificationId); } - if (_animate) - QtUi::mainWindow()->systemTray()->setAlert(true); - updateToolTip(); } @@ -83,33 +78,36 @@ void SystrayNotificationBackend::close(uint notificationId) QtUi::mainWindow()->systemTray()->closeMessage(notificationId); - //if(!_notifications.count()) //FIXME make configurable - QtUi::mainWindow()->systemTray()->setAlert(false); - updateToolTip(); } -void SystrayNotificationBackend::notificationActivated(uint notificationId) +void SystrayNotificationBackend::onNotificationActivated(uint notificationId) { if (!_blockActivation) { - if (_notifications.count()) { - if (QtUi::mainWindow()->systemTray()->mode() == SystemTray::Legacy) - _blockActivation = true; // prevent double activation because both tray icon and bubble might send a signal - if (!notificationId) - notificationId = _notifications.count() ? _notifications.last().notificationId : 0; - emit activated(notificationId); + QList::iterator i = _notifications.begin(); + while (i != _notifications.end()) { + if (i->notificationId == notificationId) { + if (QtUi::mainWindow()->systemTray()->mode() == SystemTray::Legacy) + _blockActivation = true; // prevent double activation because both tray icon and bubble might send a signal + emit activated(notificationId); + break; + } + ++i; } - else - GraphicalUi::toggleMainWidget(); } } -void SystrayNotificationBackend::notificationActivated(SystemTray::ActivationReason reason) +void SystrayNotificationBackend::onNotificationActivated(SystemTray::ActivationReason reason) { if (reason == SystemTray::Trigger) { - notificationActivated(0); + if (_notifications.count()) { + onNotificationActivated(_notifications.last().notificationId); + } + else { + GraphicalUi::toggleMainWidget(); + } } } @@ -130,12 +128,6 @@ void SystrayNotificationBackend::showBubbleChanged(const QVariant &v) } -void SystrayNotificationBackend::animateChanged(const QVariant &v) -{ - _animate = v.toBool(); -} - - void SystrayNotificationBackend::updateToolTip() { QtUi::mainWindow()->systemTray()->setToolTip("Quassel IRC", @@ -154,9 +146,9 @@ SettingsPage *SystrayNotificationBackend::createConfigWidget() const SystrayNotificationBackend::ConfigWidget::ConfigWidget(QWidget *parent) : SettingsPage("Internal", "SystrayNotification", parent) { _showBubbleBox = new QCheckBox(tr("Show a message in a popup")); - _showBubbleBox->setIcon(SmallIcon("dialog-information")); - connect(_showBubbleBox, SIGNAL(toggled(bool)), this, SLOT(widgetChanged())); - QHBoxLayout *layout = new QHBoxLayout(this); + _showBubbleBox->setIcon(icon::get("dialog-information")); + connect(_showBubbleBox, &QAbstractButton::toggled, this, &ConfigWidget::widgetChanged); + auto *layout = new QHBoxLayout(this); layout->addWidget(_showBubbleBox); }