aboutsummaryrefslogtreecommitdiffstats
path: root/community/gnome-clocks/0001-invoke-waked-when-an-alarm-changes.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/gnome-clocks/0001-invoke-waked-when-an-alarm-changes.patch')
-rw-r--r--community/gnome-clocks/0001-invoke-waked-when-an-alarm-changes.patch189
1 files changed, 189 insertions, 0 deletions
diff --git a/community/gnome-clocks/0001-invoke-waked-when-an-alarm-changes.patch b/community/gnome-clocks/0001-invoke-waked-when-an-alarm-changes.patch
new file mode 100644
index 00000000000..bfdb9af7a90
--- /dev/null
+++ b/community/gnome-clocks/0001-invoke-waked-when-an-alarm-changes.patch
@@ -0,0 +1,189 @@
+From a5f37373d2199f95ddc966b2426101bef62b4b93 Mon Sep 17 00:00:00 2001
+From: Robin Westermann <gitlab@seath.de>
+Date: Sat, 27 Feb 2021 14:41:22 +0100
+Subject: [PATCH] invoke waked when an alarm changes
+
+When an alarm is deleted, created, edited or rearmed the service
+waked is notified about the update. So waked can wake the system
+from suspend when an alarm is fired.
+
+Fixes #100
+
+Co-Authored-By: pcworld <0188801@gmail.com>
+---
+ build-aux/flatpak/org.gnome.clocks.json | 1 +
+ src/alarm-face.vala | 2 +
+ src/alarm-item.vala | 10 +++++
+ src/alarm-setup-dialog.vala | 1 +
+ src/meson.build | 1 +
+ src/waked-utils.vala | 53 +++++++++++++++++++++++++
+ 6 files changed, 68 insertions(+)
+ create mode 100644 src/waked-utils.vala
+
+diff --git a/build-aux/flatpak/org.gnome.clocks.json b/build-aux/flatpak/org.gnome.clocks.json
+index a58ffcb..b009378 100644
+--- a/build-aux/flatpak/org.gnome.clocks.json
++++ b/build-aux/flatpak/org.gnome.clocks.json
+@@ -11,6 +11,7 @@
+ "--socket=fallback-x11",
+ "--socket=wayland",
+ "--socket=pulseaudio",
++ "--system-talk-name=de.seath.Waked",
+ "--share=network",
+ "--env=G_MESSAGES_DEBUG=org.gnome.ClocksDevel"
+ ],
+diff --git a/src/alarm-face.vala b/src/alarm-face.vala
+index 58950d5..edcc796 100644
+--- a/src/alarm-face.vala
++++ b/src/alarm-face.vala
+@@ -73,6 +73,7 @@ public class Face : Adw.Bin, Clocks.Clock {
+ item.notify["active"].connect (save);
+
+ row.remove_alarm.connect (() => {
++ WakedUtils.remove_timer (((Item) item).id);
+ alarms.delete_item ((Item) item);
+ save ();
+ });
+@@ -129,6 +130,7 @@ public class Face : Adw.Bin, Clocks.Clock {
+ ((SetupDialog) dialog).apply_to_alarm (alarm);
+ save ();
+ } else if (response == DELETE_ALARM) {
++ WakedUtils.remove_timer (alarm.id);
+ alarms.delete_item (alarm);
+ save ();
+ }
+diff --git a/src/alarm-item.vala b/src/alarm-item.vala
+index 263248b..ce7678d 100644
+--- a/src/alarm-item.vala
++++ b/src/alarm-item.vala
+@@ -20,6 +20,7 @@
+ namespace Clocks {
+ namespace Alarm {
+
++
+ private struct AlarmTime {
+ public int hour;
+ public int minute;
+@@ -98,6 +99,9 @@ private class Item : Object, ContentItem {
+ _active = value;
+
+ reset ();
++ if (!active) {
++ WakedUtils.remove_timer (id);
++ }
+ if (!active && state == State.RINGING) {
+ stop ();
+ }
+@@ -161,6 +165,10 @@ private class Item : Object, ContentItem {
+ }
+
+ alarm_time = dt;
++
++ if (active) {
++ WakedUtils.update_timer (id, alarm_time);
++ }
+ }
+
+ private void update_snooze_time (GLib.DateTime start_time) {
+@@ -183,6 +191,7 @@ private class Item : Object, ContentItem {
+ public void snooze () {
+ bell.stop ();
+ state = State.SNOOZING;
++ WakedUtils.update_timer (id, snooze_time);
+ }
+
+ public void stop () {
+@@ -232,6 +241,7 @@ private class Item : Object, ContentItem {
+ update_alarm_time (); // reschedule for the next repeat
+ }
+
++
+ return state != last_state;
+ }
+
+diff --git a/src/alarm-setup-dialog.vala b/src/alarm-setup-dialog.vala
+index 5d122cd..b6f66e9 100644
+--- a/src/alarm-setup-dialog.vala
++++ b/src/alarm-setup-dialog.vala
+@@ -264,6 +264,7 @@ private class SetupDialog : Gtk.Dialog {
+
+ private void avoid_duplicate_alarm () {
+ var alarm = new Item ();
++ alarm.editing = true;
+ apply_to_alarm (alarm);
+
+ var duplicate = alarm.check_duplicate_alarm (other_alarms);
+diff --git a/src/meson.build b/src/meson.build
+index dfc7d34..ab9de1c 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -24,6 +24,7 @@ clocks_vala_sources = files(
+ 'timer-setup.vala',
+ 'timer-setup-dialog.vala',
+ 'utils.vala',
++ 'waked-utils.vala',
+ 'widgets.vala',
+ 'window.vala',
+ 'world-face.vala',
+diff --git a/src/waked-utils.vala b/src/waked-utils.vala
+new file mode 100644
+index 0000000..9b8fa4a
+--- /dev/null
++++ b/src/waked-utils.vala
+@@ -0,0 +1,53 @@
++/*
++ * Copyright (C) 2021 Robin Westermann <waked@seath.de>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2
++ * of the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++namespace Clocks {
++namespace WakedUtils {
++
++ [DBus (name = "de.seath.Waked")]
++ interface Waked : Object {
++ public abstract void add (string id, uint64 time) throws GLib.Error;
++ public abstract void update (string id, uint64 time) throws GLib.Error;
++ public abstract void remove (string id) throws GLib.Error;
++ }
++
++ public void update_timer (string id, GLib.DateTime time) {
++ try {
++ Waked waked = Bus.get_proxy_sync (BusType.SYSTEM, "de.seath.Waked",
++ "/de/seath/Waked/Alarm");
++
++ waked.update (id, time.to_unix ());
++
++ } catch (GLib.Error e) {
++ stderr.printf ("%s\n", e.message);
++ }
++ }
++
++ public void remove_timer (string id) {
++ try {
++ Waked waked = Bus.get_proxy_sync (BusType.SYSTEM, "de.seath.Waked",
++ "/de/seath/Waked/Alarm");
++
++ waked.remove (id);
++
++ } catch (GLib.Error e) {
++ stderr.printf ("%s\n", e.message);
++ }
++ }
++}
++}
+--
+2.37.2
+