X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsnorenotificationbackend.cpp;h=ee92875ed147527102543708e303d25960267b11;hp=0ada5ee1be6bc00fb2e3b4960045f1774eeda280;hb=5d693863a5904e4b29de7b9e243b89ce6fa01288;hpb=604e903a7b8b32617ca3f96e5aacb64f2744a001 diff --git a/src/qtui/snorenotificationbackend.cpp b/src/qtui/snorenotificationbackend.cpp index 0ada5ee1..ee92875e 100644 --- a/src/qtui/snorenotificationbackend.cpp +++ b/src/qtui/snorenotificationbackend.cpp @@ -22,7 +22,6 @@ #include #include -#include #include "client.h" #include "iconloader.h" @@ -42,8 +41,8 @@ SnoreNotificationBackend::SnoreNotificationBackend (QObject *parent) m_systrayBackend(NULL) { NotificationSettings notificationSettings; - QString backend = notificationSettings.value("Snore/Backend", "SystemTray").toString(); - m_timeout = notificationSettings.value("Snore/Timeout",10).toInt(); + QString backend = notificationSettings.value("Snore/Backend", "Default").toString(); + m_timeout = notificationSettings.value("Snore/Timeout", 10).toInt(); notificationSettings.notify("Snore/Backend", this, SLOT(backendChanged(const QVariant &))); notificationSettings.notify("Snore/Backend", this, SLOT(timeoutChanged(const QVariant &))); @@ -52,118 +51,157 @@ SnoreNotificationBackend::SnoreNotificationBackend (QObject *parent) m_snore = new Snore::SnoreCore(); m_snore->hints().setValue("WINDOWS_APP_ID","QuasselProject.QuasselIRC"); m_snore->loadPlugins(Snore::PluginContainer::BACKEND); - Snore::Application *a = new Snore::Application("Quassel",Snore::Icon(DesktopIcon("quassel").toImage())); + Snore::Application *a = new Snore::Application("Quassel", Snore::Icon(DesktopIcon("quassel").toImage())); - connect(m_snore,SIGNAL(actionInvoked(Snore::Notification)),this,SLOT(actionInvoked(Snore::Notification))); + connect(m_snore, SIGNAL(actionInvoked(Snore::Notification)), this, SLOT(actionInvoked(Snore::Notification))); m_icon = Snore::Icon(DesktopIcon("dialog-information").toImage()); - a->addAlert(new Snore::Alert(tr("Private Message"),tr("Private Message"))); + a->addAlert(new Snore::Alert(tr("Private Message"), tr("Private Message"))); m_snore->addApplication(a); m_snore->applicationIsInitialized (a); backendChanged(QVariant::fromValue(backend)); + + } -SnoreNotificationBackend::~SnoreNotificationBackend(){ +SnoreNotificationBackend::~SnoreNotificationBackend() +{ m_snore->removeApplication("Quassel"); m_snore->deleteLater(); } -void SnoreNotificationBackend::backendChanged(const QVariant &v){ +void SnoreNotificationBackend::backendChanged(const QVariant &v) +{ QString backend = v.toString(); - if(backend == "SystemTray"){ - if(m_systrayBackend == NULL){ - m_systrayBackend = new SystrayNotificationBackend(this); - QtUi::registerNotificationBackend(m_systrayBackend); + if (backend == "Default") { + if (m_snore->setPrimaryNotificationBackend()) {//try to find the default backend for the platform + return; } - }else{ - if(m_systrayBackend != NULL){ - QtUi::unregisterNotificationBackend(m_systrayBackend); - delete m_systrayBackend; - m_systrayBackend = NULL; + } + else if (backend != "SystemTray") { + if (setSnoreBackend(backend)) { + return; } - m_snore->setPrimaryNotificationBackend(backend); } + setTraybackend(); } -void SnoreNotificationBackend::timeoutChanged(const QVariant &v){ +void SnoreNotificationBackend::timeoutChanged(const QVariant &v) +{ m_timeout = v.toInt(); } -void SnoreNotificationBackend::notify(const Notification &n){ - if(m_systrayBackend != NULL) +void SnoreNotificationBackend::notify(const Notification &n) +{ + if (m_systrayBackend != NULL) { return; + } QString title = Client::networkModel()->networkName(n.bufferId) + " - " + Client::networkModel()->bufferName(n.bufferId); QString message = QString("<%1> %2").arg(n.sender, n.message); - Snore::Notification noti("Quassel",tr("Private Message"),title,message,m_icon,m_timeout); - noti.hints().setValue("QUASSEL_ID",n.notificationId); - m_notificationIds.insert(n.notificationId,noti.id()); + Snore::Notification noti("Quassel", tr("Private Message"), title, message, m_icon, m_timeout); + noti.hints().setValue("QUASSEL_ID", n.notificationId); + m_notificationIds.insert(n.notificationId, noti.id()); m_snore->broadcastNotification(noti); } -void SnoreNotificationBackend::close(uint notificationId){ - if(m_systrayBackend != NULL) +void SnoreNotificationBackend::close(uint notificationId) +{ + if (m_systrayBackend != NULL) { return; + } Snore::Notification n = m_snore->getActiveNotificationByID(m_notificationIds.take(notificationId)); - m_snore->requestCloseNotification(n,Snore::NotificationEnums::CloseReasons::CLOSED); + m_snore->requestCloseNotification(n, Snore::NotificationEnums::CloseReasons::CLOSED); } -void SnoreNotificationBackend::actionInvoked(Snore::Notification n){ +void SnoreNotificationBackend::actionInvoked(Snore::Notification n) +{ emit activated(n.hints().value("QUASSEL_ID").toUInt()); } -SettingsPage *SnoreNotificationBackend::createConfigWidget()const{ +SettingsPage *SnoreNotificationBackend::createConfigWidget()const +{ return new ConfigWidget(m_snore); } +void SnoreNotificationBackend::setTraybackend() +{ + if (m_systrayBackend == NULL) { + m_systrayBackend = new SystrayNotificationBackend(this); + QtUi::registerNotificationBackend(m_systrayBackend); + } +} + +bool SnoreNotificationBackend::setSnoreBackend(const QString &backend) +{ + if (m_systrayBackend != NULL) { + QtUi::unregisterNotificationBackend(m_systrayBackend); + delete m_systrayBackend; + m_systrayBackend = NULL; + } + return m_snore->setPrimaryNotificationBackend(backend); +} + + + /***************************************************************************/ -SnoreNotificationBackend::ConfigWidget::ConfigWidget(Snore::SnoreCore *snore,QWidget *parent) +SnoreNotificationBackend::ConfigWidget::ConfigWidget(Snore::SnoreCore *snore, QWidget *parent) :SettingsPage("Internal", "SnoreNotification", parent), m_snore(snore) { ui.setupUi(this); - ui.backends->insertItems(0,m_snore->notificationBackends()); + ui.backends->insertItem(0, "Default"); + ui.backends->insertItems(1, m_snore->notificationBackends()); connect(ui.backends, SIGNAL(currentIndexChanged(QString)), SLOT(backendChanged(QString))); - connect(ui.timeout,SIGNAL(valueChanged(int)),this,SLOT(timeoutChanged(int))); + connect(ui.timeout, SIGNAL(valueChanged(int)), this, SLOT(timeoutChanged(int))); } -void SnoreNotificationBackend::ConfigWidget::backendChanged(const QString &b){ - ui.backends->setCurrentIndex(ui.backends->findText(b)); - setChangedState(true); +void SnoreNotificationBackend::ConfigWidget::backendChanged(const QString &b) +{ + ui.backends->setCurrentIndex(ui.backends->findText(b)); + setChangedState(true); } -void SnoreNotificationBackend::ConfigWidget::timeoutChanged(int i){ +void SnoreNotificationBackend::ConfigWidget::timeoutChanged(int i) +{ ui.timeout->setValue(i); setChangedState(true); } -bool SnoreNotificationBackend::ConfigWidget::hasDefaults() const { +bool SnoreNotificationBackend::ConfigWidget::hasDefaults() const +{ return true; } -void SnoreNotificationBackend::ConfigWidget::defaults() { - backendChanged("SystemTray"); +void SnoreNotificationBackend::ConfigWidget::defaults() +{ + backendChanged("Default"); timeoutChanged(10); } -void SnoreNotificationBackend::ConfigWidget::load() { +void SnoreNotificationBackend::ConfigWidget::load() +{ NotificationSettings s; - QString backend = s.value("Snore/Backend", "SystemTray").toString(); - int timeout = s.value("Snore/Timeout",10).toInt(); + QString backend = m_snore->primaryNotificationBackend(); + if (backend.isEmpty()) { + backend = "SystemTray"; + } + int timeout = s.value("Snore/Timeout", 10).toInt(); ui.backends->setCurrentIndex(ui.backends->findText(backend)); ui.timeout->setValue(timeout); setChangedState(false); } -void SnoreNotificationBackend::ConfigWidget::save() { +void SnoreNotificationBackend::ConfigWidget::save() +{ NotificationSettings s; s.setValue("Snore/Backend", ui.backends->currentText()); - s.setValue("Snore/Timeout",ui.timeout->value()); + s.setValue("Snore/Timeout", ui.timeout->value()); load(); }