aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/datetime/settings.h1
-rw-r--r--src/snap.cpp17
2 files changed, 18 insertions, 0 deletions
diff --git a/include/datetime/settings.h b/include/datetime/settings.h
index 253a00a..d5e81c6 100644
--- a/include/datetime/settings.h
+++ b/include/datetime/settings.h
@@ -61,6 +61,7 @@ public:
core::Property<unsigned int> alarm_volume;
core::Property<unsigned int> alarm_duration;
core::Property<unsigned int> snooze_duration;
+ core::Property<std::set<std::pair<std::string,std::string>>> muted_apps;
};
} // namespace datetime
diff --git a/src/snap.cpp b/src/snap.cpp
index f0300af..934ad19 100644
--- a/src/snap.cpp
+++ b/src/snap.cpp
@@ -84,6 +84,12 @@ public:
appointment_func snooze,
appointment_func ok)
{
+ // If calendar notifications are muted, don't show them
+ if (!appointment.is_ubuntu_alarm() && calendar_events_are_muted()) {
+ g_debug("Skipping muted calendar event '%s' notification", appointment.summary.c_str());
+ return;
+ }
+
/* Alarms and calendar events are treated differently.
Alarms should require manual intervention to dismiss.
Calendar events are less urgent and shouldn't require manual
@@ -159,6 +165,17 @@ public:
private:
+ bool calendar_events_are_muted() const
+ {
+ for(const auto& app : m_settings->muted_apps.get()) {
+ if (app.first == "com.ubuntu.calendar") {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
static void on_sound_proxy_ready(GObject* /*source_object*/, GAsyncResult* res, gpointer gself)
{
GError * error;