Alarm notification now pushes ringtones
[gregoa/zavai.git] / src / app_notify.vala
index 8759bb393bbb3318e4337ce19db10f2d8729bfcf..2a4b14c52fa852d95aa0661f90db6d9742b1de55 100644 (file)
@@ -26,20 +26,45 @@ namespace notify {
 
 public abstract class Notifier : Gtk.Dialog
 {
-    public string name { get; construct; }
+    public string notifier_name { get; construct; }
+
+    construct {
+        set_transient_for(zavai.app);
+        set_modal(true);
+        set_position(Gtk.WindowPosition.CENTER_ON_PARENT);
+    }
+
+    protected virtual bool push_aux_state()
+    {
+        return false;
+    }
+
+    protected virtual bool push_vibrator_state()
+    {
+        return false;
+    }
+
+    protected virtual bool push_ringtone_state()
+    {
+        return false;
+    }
 
     public int run()
     {
-        ui.power.backlight.request(name);
-        // TODO: Save aux state
-        // TODO: Save vibrator state
-        // TODO: Save ringtone state
-        // TODO: set our state
+        ui.power.backlight.request(notifier_name);
+
+        // Setup our attention seeking strategy
+        bool has_aux = zavai.led.aux != null && push_aux_state();
+        bool has_vibrator = zavai.led.vibrator != null && push_vibrator_state();
+        bool has_ringtone = zavai.audio.soundplayer != null && push_ringtone_state();
+
+        // Run dialog
         int res = base.run();
-        // TODO: Restore ringtone state
-        // TODO: Restore vibrator state
-        // TODO: Restore aux state
-        ui.power.backlight.release(name);
+
+        if (has_ringtone) zavai.audio.soundplayer.pop_state(notifier_name);
+        if (has_vibrator) zavai.led.vibrator.pop_state(notifier_name);
+        if (has_aux) zavai.led.aux.pop_state(notifier_name);
+        ui.power.backlight.release(notifier_name);
         return res;
     }
 }