Use X11 to handle the screen turning off
authorEnrico Zini <enrico@enricozini.org>
Mon, 28 Sep 2009 14:33:17 +0000 (15:33 +0100)
committerEnrico Zini <enrico@enricozini.org>
Mon, 28 Sep 2009 14:33:17 +0000 (15:33 +0100)
This allows me to turn off idle notifier in frameworkd, removing the need for yet another process switch for every single input event.

Also, idle notifier for some reason was suspending my freerunner all the time, which is not good when you want to get a fix with the GPS.

README
src/app_power.vala
src/config.vala
src/zavai.vala

diff --git a/README b/README
index 737a73b5b33519640debd02a1938f9b8d9032c05..d0c6decce37b264aff3eefcf4f437112f8050508 100644 (file)
--- a/README
+++ b/README
@@ -97,12 +97,17 @@ Features / guide
  * Alarms
 
  It is possible to set an alarm, which will be shown in the alarm window. When
- the alarm expires, the phone wakes up if it is suspended, and zavai does
- nothing but print an error message on standard error.
+ the alarm expires, the phone wakes up if it is suspended, and zavai vibrates
+ for 5 seconds.
+
+ It is planned to use the AUX button to acknowledge the alarm and stop the
+ vibration; when this will happen, vibration can go on for more than 5 seconds.
  
- When there will be a documented API to turn OFF the vibrator, I'll implement
- vibration on alarm.  When I'll implement some audio playing infrastructure,
- I'll implement playing an audio file as well.
+ When I'll implement some audio playing infrastructure, I'll implement playing
+ an audio file as well.
+
+ Also missing are a popup that tells that an alarm is ringing, and a notifier
+ for unacknowledged popups.
 
  Patches welcome.
 
@@ -137,11 +142,18 @@ TODO list / wish list
  http://git.freesmartphone.org/?p=specs.git;a=blob_plain;f=html/index.html;hb=HEAD
 
  * Features to add:
+ - GSM power and network
+    - link to open SHR-dialer
+ - icon to show if there are new messages
+    - link to open SHR-messages
  - switch backlight keep mode when on power/recharging
     - the button changes the default for the current power mode
  - alarm
-    - vibrate at alarm trigger
+    + vibrate at alarm trigger
     - play sound at alarm trigger
+    - acknowledge alarms with AUX button
+       - then, vibrate and play sound for longer
+    - popup that tells that an alarm is ringing
     - leave expired alarm on screen until acknowledged
       (alarm status icon that also brings to alarm menu)
     - remember alarm names (on request, maybe with an add feature) and how
@@ -149,6 +161,7 @@ TODO list / wish list
     - remember unexpired alarms persistently (again, a table in sqlite?) so
       that they can be reinstated if zavai is restarted
     - show active alarms and allow to delete them
+ - unlock screen when receiving phone calls
  - GPX status icon (off, waiting for fix, recording)
  - GPX waypoint using AUX button
  - GPX + Audio track
index d809418cafee541ae8a103f9159f8c054fc17cae..e58fe600cb1d86ae8b96a607535b6356ee8b257c 100644 (file)
@@ -87,7 +87,8 @@ public class Power : zavai.Resource, Object
        public void do_shutdown()
        {
                try {
-                       usage.Shutdown();
+                       //usage.Shutdown();
+                       zavai.app.run_script("shutdown -h now");
                } catch (Error e) {
                        zavai.log.error("Shutting down phone: " + e.message);
                }
@@ -95,7 +96,8 @@ public class Power : zavai.Resource, Object
        public void do_reboot()
        {
                try {
-                       usage.Reboot();
+                       //usage.Reboot();
+                       zavai.app.run_script("shutdown -r now");
                } catch (Error e) {
                        zavai.log.error("Rebooting phone: " + e.message);
                }
@@ -396,6 +398,7 @@ public class Backlight: zavai.Service
                {
                        try {
                                display.SetBacklightPower(false);
+                               zavai.app.run_script(zavai.config.xset_dpms_short_wait);
                                /*
                                string policy = usage.GetResourcePolicy("Display");
                                if (policy == "auto")
@@ -413,6 +416,7 @@ public class Backlight: zavai.Service
        {
                try {
                        display.SetBacklightPower(true);
+                       zavai.app.run_script(zavai.config.xset_dpms_long_wait);
                        //usage.SetResourcePolicy("Display", "auto");
                } catch (GLib.Error e) {
                        zavai.log.error(e.message);
@@ -426,6 +430,7 @@ public class Backlight: zavai.Service
                if (started) return;
                try {
                        usage.RequestResource("Display");
+                       zavai.app.run_script(zavai.config.xset_dpms_always_on);
                        zavai.log.info("Acquired display");
                        base.start();
                } catch (GLib.Error e) {
@@ -440,6 +445,7 @@ public class Backlight: zavai.Service
                if (!started) return;
                try {
                        usage.ReleaseResource("Display");
+                       zavai.app.run_script(zavai.config.xset_dpms_long_wait);
                        zavai.log.info("Released display");
                        base.stop();
                } catch (GLib.Error e) {
index 4626d22d3de5d48d35dfd5d420f2d37257e2f9c5..b7488f4d789326649495eeee14332e6dc6791699 100644 (file)
@@ -25,6 +25,10 @@ public class Config
     public string version { get; set; }
     public string homedir { get; set; }
     public string icondir { get; set; }
+    public string xset_dpms_always_on { get; set; }
+    public string xset_dpms_turn_off { get; set; }
+    public string xset_dpms_long_wait { get; set; }
+    public string xset_dpms_short_wait { get; set; }
     public int min_button_height { get; set; }
 
     public Config()
@@ -34,6 +38,10 @@ public class Config
         homedir = GLib.Environment.get_home_dir() + "/.zavai";
         icondir = "./icons";
         min_button_height = 80;
+       xset_dpms_always_on = "xset dpms force on; xset dpms 0 0 0";
+       xset_dpms_turn_off = "xset dpms force off";
+       xset_dpms_long_wait = "xset dpms 0 0 30";
+       xset_dpms_short_wait = "xset dpms 0 0 5";
     }
 
 /*
index b12de477c4fa5bdbd11c08f3ed80fd0edb931e97..1b02d8e97a411cb249c7e7ec2dc3b698d3f6bb51 100644 (file)
@@ -75,6 +75,7 @@ static int main (string[] args) {
        // User interface
        zavai.ui.main.init();
        zavai.ui.gps.init();
+       zavai.app.run_script(zavai.config.xset_dpms_long_wait);
        zavai.ui.power.init();
        zavai.ui.kbd.init();
        zavai.ui.wm.init();