From b9c1fc4478a6db6f9073fb8d01086c4045208657 Mon Sep 17 00:00:00 2001 From: Dmitry Novotochinov Date: Wed, 3 Oct 2018 16:34:16 +0300 Subject: [PATCH] add setDockBadgeLabel method --- src/libsnore/plugins/snorebackend.h | 1 + src/libsnore/snore.cpp | 8 ++++++++ src/libsnore/snore.h | 5 +++++ .../freedesktopnotification_backend.cpp | 5 +++++ .../freedesktop_backend/freedesktopnotification_backend.h | 1 + src/plugins/backends/osxnotificationcenter/CMakeLists.txt | 2 +- .../osxnotificationcenter/osxnotificationcenter.h | 1 + .../osxnotificationcenter/osxnotificationcenter.mm | 6 +++++- src/plugins/backends/snore/snorenotifier.cpp | 5 +++++ src/plugins/backends/snore/snorenotifier.h | 1 + src/plugins/backends/trayicon/trayiconnotifer.cpp | 4 ++++ src/plugins/backends/trayicon/trayiconnotifer.h | 1 + 12 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/libsnore/plugins/snorebackend.h b/src/libsnore/plugins/snorebackend.h index a89e899..36de50d 100644 --- a/src/libsnore/plugins/snorebackend.h +++ b/src/libsnore/plugins/snorebackend.h @@ -53,6 +53,7 @@ public Q_SLOTS: virtual void slotDeregisterApplication(const Snore::Application &application); virtual void slotNotify(Snore::Notification notification) = 0; virtual void slotCloseNotification(Snore::Notification notification); + virtual void setDockBadgeLabel(const QString label) = 0; protected Q_SLOTS: void slotNotificationDisplayed(Notification notification); diff --git a/src/libsnore/snore.cpp b/src/libsnore/snore.cpp index 36cfd3a..0054008 100644 --- a/src/libsnore/snore.cpp +++ b/src/libsnore/snore.cpp @@ -137,6 +137,14 @@ void SnoreCore::broadcastNotification(Notification notification) emit d->notify(notification); } +void SnoreCore::setDockBadgeLabel(const QString label) +{ + Q_D(const SnoreCore); + if (d->m_notificationBackend != nullptr) { + d->m_notificationBackend->setDockBadgeLabel(label); + } +} + void SnoreCore::registerApplication(const Application &application) { Q_D(SnoreCore); diff --git a/src/libsnore/snore.h b/src/libsnore/snore.h index 7a91100..06980b6 100644 --- a/src/libsnore/snore.h +++ b/src/libsnore/snore.h @@ -81,6 +81,11 @@ public: */ void displayExampleNotification(); + /** + * Sets dock badge label + */ + void setDockBadgeLabel(const QString label); + /** * Register an application. * Each application should only be registered once. diff --git a/src/plugins/backends/freedesktop_backend/freedesktopnotification_backend.cpp b/src/plugins/backends/freedesktop_backend/freedesktopnotification_backend.cpp index 89e60bb..a012d59 100644 --- a/src/plugins/backends/freedesktop_backend/freedesktopnotification_backend.cpp +++ b/src/plugins/backends/freedesktop_backend/freedesktopnotification_backend.cpp @@ -90,6 +90,11 @@ void SnorePlugin::Freedesktop::slotNotify(Snore::Notification noti) qCDebug(SNORE) << noti.id() << "|" << id.value(); } +void SnorePlugin::Freedesktop::setDockBadgeLabel(const QString label) +{ + +} + void SnorePlugin::Freedesktop::slotActionInvoked(const uint id, const QString &actionID) { qCDebug(SNORE) << id << m_dbusIdMap[id]; diff --git a/src/plugins/backends/freedesktop_backend/freedesktopnotification_backend.h b/src/plugins/backends/freedesktop_backend/freedesktopnotification_backend.h index 263d5ac..858f3fa 100644 --- a/src/plugins/backends/freedesktop_backend/freedesktopnotification_backend.h +++ b/src/plugins/backends/freedesktop_backend/freedesktopnotification_backend.h @@ -20,6 +20,7 @@ public: public Q_SLOTS: void slotNotify(Snore::Notification notification) override; void slotCloseNotification(Snore::Notification notification) override; + void setDockBadgeLabel(const QString label) override; void slotActionInvoked(const uint id, const QString &actionID); void slotNotificationClosed(const uint id, const uint reason); diff --git a/src/plugins/backends/osxnotificationcenter/CMakeLists.txt b/src/plugins/backends/osxnotificationcenter/CMakeLists.txt index 377f015..8609273 100644 --- a/src/plugins/backends/osxnotificationcenter/CMakeLists.txt +++ b/src/plugins/backends/osxnotificationcenter/CMakeLists.txt @@ -1,3 +1,3 @@ if(APPLE) - add_snore_plugin("OSX Notification Center" SOURCES osxnotificationcenter.mm TYPE Backend LIBS /System/Library/Frameworks/Foundation.framework) + add_snore_plugin("OSX Notification Center" SOURCES osxnotificationcenter.mm TYPE Backend LIBS /System/Library/Frameworks/Foundation.framework /System/Library/Frameworks/Cocoa.framework) endif(APPLE) diff --git a/src/plugins/backends/osxnotificationcenter/osxnotificationcenter.h b/src/plugins/backends/osxnotificationcenter/osxnotificationcenter.h index 9f4b784..ac3be98 100644 --- a/src/plugins/backends/osxnotificationcenter/osxnotificationcenter.h +++ b/src/plugins/backends/osxnotificationcenter/osxnotificationcenter.h @@ -33,6 +33,7 @@ public: public Q_SLOTS: void slotNotify(Snore::Notification notification) override; + void setDockBadgeLabel(const QString label); }; #endif // OSXNOTIFICATIONCENTER_H diff --git a/src/plugins/backends/osxnotificationcenter/osxnotificationcenter.mm b/src/plugins/backends/osxnotificationcenter/osxnotificationcenter.mm index fc56a6a..e8c23c8 100644 --- a/src/plugins/backends/osxnotificationcenter/osxnotificationcenter.mm +++ b/src/plugins/backends/osxnotificationcenter/osxnotificationcenter.mm @@ -9,6 +9,7 @@ #import #include #import +#import "AppKit/NSApplication.h" using namespace Snore; @@ -165,4 +166,7 @@ void OSXNotificationCenter::slotNotify(Snore::Notification notification) slotNotificationDisplayed(notification); } - +void OSXNotificationCenter::setDockBadgeLabel(const QString label) +{ + [[[NSApplication sharedApplication] dockTile] setBadgeLabel:label.toNSString()]; +} diff --git a/src/plugins/backends/snore/snorenotifier.cpp b/src/plugins/backends/snore/snorenotifier.cpp index a0f696d..093b030 100644 --- a/src/plugins/backends/snore/snorenotifier.cpp +++ b/src/plugins/backends/snore/snorenotifier.cpp @@ -60,6 +60,11 @@ void SnorePlugin::Snore::slotNotify(::Snore::Notification notification) } } +void SnorePlugin::Snore::setDockBadgeLabel(const QString label) +{ + +} + void SnorePlugin::Snore::slotCloseNotification(::Snore::Notification notification) { NotifyWidget *w = m_widgets[notification.hints().privateValue(this, "id").toInt()]; diff --git a/src/plugins/backends/snore/snorenotifier.h b/src/plugins/backends/snore/snorenotifier.h index f7ebd3e..31b6f5e 100644 --- a/src/plugins/backends/snore/snorenotifier.h +++ b/src/plugins/backends/snore/snorenotifier.h @@ -43,6 +43,7 @@ protected: public Q_SLOTS: virtual void slotNotify(::Snore::Notification notification) override; virtual void slotCloseNotification(::Snore::Notification notification) override; + virtual void setDockBadgeLabel(const QString label) override; void slotRegisterApplication(const ::Snore::Application &application); private: diff --git a/src/plugins/backends/trayicon/trayiconnotifer.cpp b/src/plugins/backends/trayicon/trayiconnotifer.cpp index 605e83f..c224505 100644 --- a/src/plugins/backends/trayicon/trayiconnotifer.cpp +++ b/src/plugins/backends/trayicon/trayiconnotifer.cpp @@ -30,6 +30,10 @@ void SnorePlugin::Trayicon::slotNotify(Snore::Notification notification) } } +void SnorePlugin::Trayicon::setDockBadgeLabel(const QString label) { + +} + void SnorePlugin::Trayicon::slotCloseNotification(Snore::Notification n) { QSystemTrayIcon *icon = trayIcon(n.application()); diff --git a/src/plugins/backends/trayicon/trayiconnotifer.h b/src/plugins/backends/trayicon/trayiconnotifer.h index a9fc6e5..06eaddd 100644 --- a/src/plugins/backends/trayicon/trayiconnotifer.h +++ b/src/plugins/backends/trayicon/trayiconnotifer.h @@ -24,6 +24,7 @@ public Q_SLOTS: void slotCloseNotification(Snore::Notification notification) override; void slotRegisterApplication(const Snore::Application &application) override; void slotDeregisterApplication(const Snore::Application &application) override; + void setDockBadgeLabel(const QString label) override; private: QSystemTrayIcon *trayIcon(const Snore::Application &app);