aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Mello <arthur.mello@canonical.com>2016-06-29 21:37:56 -0300
committerRobert Tari <robert@tari.in>2021-07-08 01:51:40 +0200
commitfb29c9e706c143e38726ea057fdb754a8e30c2aa (patch)
tree23eb102936ea63c23d5cf234a290606d60d3d21f
parent1893e15b2ccb06b72df6bbd522ba8707eccedac1 (diff)
downloadayatana-indicator-datetime-fb29c9e706c143e38726ea057fdb754a8e30c2aa.tar.gz
ayatana-indicator-datetime-fb29c9e706c143e38726ea057fdb754a8e30c2aa.tar.bz2
ayatana-indicator-datetime-fb29c9e706c143e38726ea057fdb754a8e30c2aa.zip
Fix notifications so it respects if it should or not show bubbles or add to notification list
-rw-r--r--include/notifications/notifications.h6
-rw-r--r--src/notifications.cpp23
-rw-r--r--src/snap.cpp8
3 files changed, 33 insertions, 4 deletions
diff --git a/include/notifications/notifications.h b/include/notifications/notifications.h
index 450c45b..a76ec45 100644
--- a/include/notifications/notifications.h
+++ b/include/notifications/notifications.h
@@ -77,6 +77,12 @@ public:
/** Sets the time-out callback. This will be called exactly once. */
void set_timeout_callback (std::function<void()>);
+ /** Sets if a notification bubble should be displayed. */
+ void set_show_notification_bubble (bool show);
+
+ /** Sets if notification should be posted to messaging menu after it is closed. */
+ void set_post_to_messaging_menu (bool post);
+
private:
friend class Engine;
diff --git a/src/notifications.cpp b/src/notifications.cpp
index 3c90e57..4a2c846 100644
--- a/src/notifications.cpp
+++ b/src/notifications.cpp
@@ -63,6 +63,8 @@ public:
std::vector<std::pair<std::string,std::string>> m_actions;
std::function<void(const std::string&)> m_closed_callback;
std::function<void()> m_timeout_callback;
+ bool m_show_notification_bubble;
+ bool m_post_to_messaging_menu;
};
Builder::Builder():
@@ -128,6 +130,18 @@ Builder::set_start_time (uint64_t time)
impl->m_start_time = time;
}
+void
+Builder::set_show_notification_bubble (bool show)
+{
+ impl->m_show_notification_bubble = show;
+}
+
+void
+Builder::set_post_to_messaging_menu (bool post)
+{
+ impl->m_post_to_messaging_menu = post;
+}
+
/***
****
***/
@@ -265,6 +279,11 @@ public:
g_signal_connect (nn.get(), "closed",
G_CALLBACK(on_notification_closed), this);
+ if (!info.m_show_notification_bubble) {
+ post(info);
+ return ret;
+ }
+
GError * error = nullptr;
if (notify_notification_show(nn.get(), &error))
{
@@ -284,6 +303,10 @@ public:
std::string post(const Builder::Impl& data)
{
+ if (!data.m_post_to_messaging_menu) {
+ return "";
+ }
+
if (!m_messaging_app) {
return std::string();
}
diff --git a/src/snap.cpp b/src/snap.cpp
index 273f125..1b7c183 100644
--- a/src/snap.cpp
+++ b/src/snap.cpp
@@ -96,10 +96,7 @@ public:
const bool interactive = appointment.is_ubuntu_alarm() && m_engine->supports_actions();
// force the system to stay awake
- std::shared_ptr<ain::Awake> awake;
- if (appointment.is_ubuntu_alarm() || calendar_bubbles_enabled()) {
- awake = std::make_shared<ain::Awake>(m_engine->app_name());
- }
+ std::shared_ptr<ain::Awake> awake = std::make_shared<ain::Awake>(m_engine->app_name());
// calendar events are muted in silent mode; alarm clocks never are
std::shared_ptr<ain::Sound> sound;
@@ -183,6 +180,9 @@ public:
});
}
+ b.set_show_notification_bubble(appointment.is_ubuntu_alarm() || calendar_bubbles_enabled());
+ b.set_post_to_messaging_menu(appointment.is_ubuntu_alarm() || calendar_list_enabled());
+
const auto key = m_engine->show(b);
if (key)
m_notifications.insert (key);