From 0fb7f2d6b2c291374496e0ab7f084434346bfb90 Mon Sep 17 00:00:00 2001 From: Patrick von Reth Date: Sun, 19 Apr 2015 20:15:46 +0200 Subject: [PATCH] this should be better -.- --- src/libsnore/notification/notification.cpp | 15 +++++++-------- src/libsnore/notification/notification.h | 7 ++++--- src/libsnore/plugins/plugins.cpp | 6 ------ src/libsnore/plugins/plugins.h | 5 ----- src/libsnore/snore.cpp | 7 +++++++ src/libsnore/snore.h | 1 + src/libsnore/snore_p.h | 3 +++ src/plugins/backends/growl/growlbackend.cpp | 2 +- .../freedesktopnotificationfrontend.cpp | 4 ++-- 9 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/libsnore/notification/notification.cpp b/src/libsnore/notification/notification.cpp index c572fa2..a639efc 100644 --- a/src/libsnore/notification/notification.cpp +++ b/src/libsnore/notification/notification.cpp @@ -147,25 +147,24 @@ bool Notification::isValid() const } -void Notification::addActiveIn(SnorePlugin *o) +void Notification::addActiveIn(const QObject *o) { d->m_activeIn.insert(o); - o->m_activeNotifications[id()] = *this; + SnoreCorePrivate::instance()->m_activeNotifications[id()] = *this; } -bool Notification::isActiveIn(const SnorePlugin *o) const +bool Notification::isActiveIn(const QObject *o) const { return d->m_activeIn.contains(o); } -bool Notification::removeActiveIn(SnorePlugin *o) +bool Notification::removeActiveIn(const QObject *o) { bool out = d->m_activeIn.remove(o); - if (out) { - o->m_activeNotifications.remove(id()); - return true; + if (d->m_activeIn.isEmpty()) { + SnoreCorePrivate::instance()->m_activeNotifications.remove(id()); } - return false; + return out; } NotificationData *Notification::data() diff --git a/src/libsnore/notification/notification.h b/src/libsnore/notification/notification.h index 87aefd0..5274d2d 100644 --- a/src/libsnore/notification/notification.h +++ b/src/libsnore/notification/notification.h @@ -266,9 +266,10 @@ public: */ static int defaultTimeout(); - void addActiveIn(SnorePlugin *o); - bool isActiveIn(const Snore::SnorePlugin *o) const; - bool removeActiveIn(SnorePlugin *o); + void addActiveIn(const QObject *o); + bool isActiveIn(const QObject *o) const; + bool removeActiveIn(const QObject* o); + private: QExplicitlySharedDataPointer d; diff --git a/src/libsnore/plugins/plugins.cpp b/src/libsnore/plugins/plugins.cpp index e019d51..1c4929d 100644 --- a/src/libsnore/plugins/plugins.cpp +++ b/src/libsnore/plugins/plugins.cpp @@ -60,11 +60,6 @@ bool SnorePlugin::isInitialized() const return m_initialized; } -Notification SnorePlugin::activeNotificationById(uint id) -{ - return m_activeNotifications.value(id); -} - QVariant SnorePlugin::value(const QString &key, SettingsType type) const { return SnoreCore::instance().value(normaliseKey(key), type); @@ -119,7 +114,6 @@ bool SnorePlugin::deinitialize() if (m_initialized) { snoreDebug(SNORE_DEBUG) << "Deinitialize" << m_name << this; m_initialized = false; - m_activeNotifications.clear(); return true; } return false; diff --git a/src/libsnore/plugins/plugins.h b/src/libsnore/plugins/plugins.h index 9374b5d..f503d1b 100644 --- a/src/libsnore/plugins/plugins.h +++ b/src/libsnore/plugins/plugins.h @@ -53,8 +53,6 @@ public: virtual bool deinitialize(); bool isInitialized() const; - Snore::Notification activeNotificationById(uint id); - const QString &name() const; PluginTypes type() const; const QString typeName() const; @@ -77,9 +75,6 @@ private: bool m_initialized = false; PluginTypes m_type = NONE; - QHash m_activeNotifications; - - friend class Notification; friend class PluginContainer; }; diff --git a/src/libsnore/snore.cpp b/src/libsnore/snore.cpp index 4347169..2c4ca7d 100644 --- a/src/libsnore/snore.cpp +++ b/src/libsnore/snore.cpp @@ -231,3 +231,10 @@ void SnoreCore::setDefaultValue(const QString &key, const QVariant &value, Setti d->m_settings->setValue(nk, value); } } + + +Notification SnoreCore::activeNotificationById(uint id) const +{ + Q_D(const SnoreCore); + return d->m_activeNotifications.value(id); +} diff --git a/src/libsnore/snore.h b/src/libsnore/snore.h index 4118741..acdeda9 100644 --- a/src/libsnore/snore.h +++ b/src/libsnore/snore.h @@ -150,6 +150,7 @@ public: void setValue(const QString &key, const QVariant &value, SettingsType type = GLOBAL_SETTING); void setDefaultValue(const QString &key, const QVariant &value, SettingsType type = GLOBAL_SETTING); + Notification activeNotificationById(uint id) const; signals: /** * This signal is emitted when an action on the Notification was performed. diff --git a/src/libsnore/snore_p.h b/src/libsnore/snore_p.h index beec1c1..3eca211 100644 --- a/src/libsnore/snore_p.h +++ b/src/libsnore/snore_p.h @@ -109,6 +109,9 @@ private: QString m_localSettingsPrefix = qApp->applicationName().isEmpty() ? "SnoreNotify" : qApp->applicationName(); QSettings *m_settings; + + QHash m_activeNotifications; + friend class Snore::Notification; }; } diff --git a/src/plugins/backends/growl/growlbackend.cpp b/src/plugins/backends/growl/growlbackend.cpp index d609848..2d315a5 100644 --- a/src/plugins/backends/growl/growlbackend.cpp +++ b/src/plugins/backends/growl/growlbackend.cpp @@ -45,7 +45,7 @@ bool GrowlBackend::initialize() s_instance = this; auto func = [](growl_callback_data *data)->void{ snoreDebug(SNORE_DEBUG) << data->id << QString(data->reason) << QString(data->data); - Notification n = s_instance->activeNotificationById(data->id); + Notification n = Snore::SnoreCore::instance().activeNotificationById(data->id); if (!n.isValid()) { return; } diff --git a/src/plugins/frontends/freedesktop/freedesktopnotificationfrontend.cpp b/src/plugins/frontends/freedesktop/freedesktopnotificationfrontend.cpp index a959f62..6666b08 100644 --- a/src/plugins/frontends/freedesktop/freedesktopnotificationfrontend.cpp +++ b/src/plugins/frontends/freedesktop/freedesktopnotificationfrontend.cpp @@ -124,7 +124,7 @@ uint FreedesktopFrontend::Notify(const QString &app_name, uint replaces_id, } Notification noti; - Notification toReplace = activeNotificationById(replaces_id); + Notification toReplace = SnoreCore::instance().activeNotificationById(replaces_id); if (replaces_id != 0 && toReplace.isValid()) { noti = Notification(toReplace, summary, body, icon, timeout == -1 ? Notification::defaultTimeout() : timeout / 1000, priotity); } else { @@ -141,7 +141,7 @@ uint FreedesktopFrontend::Notify(const QString &app_name, uint replaces_id, void FreedesktopFrontend::CloseNotification(uint id) { - Notification noti = activeNotificationById(id); + Notification noti = SnoreCore::instance().activeNotificationById(id); if (noti.isValid()) { SnoreCore::instance().requestCloseNotification(noti, Notification::TIMED_OUT); }