Added main status screen with CLOCK
authorEnrico Zini <enrico@enricozini.org>
Sun, 16 Aug 2009 20:02:51 +0000 (21:02 +0100)
committerEnrico Zini <enrico@enricozini.org>
Sun, 16 Aug 2009 20:02:51 +0000 (21:02 +0100)
src/Makefile.am
src/app_main.vala [new file with mode: 0644]
src/gps.vala
src/zavai.vala

index f9ea17dcc0c75ebb9490a71dfed1781fc8cb77db..a432d686e6138be5d1f8fe2b1eabc6ed3848145f 100644 (file)
@@ -40,6 +40,7 @@ zavai_VALASOURCES = \
        app_wm.vala \
        app_gps.vala \
        app_polygen.vala \
+       app_main.vala \
        app_debug.vala \
        zavai.vala
 
diff --git a/src/app_main.vala b/src/app_main.vala
new file mode 100644 (file)
index 0000000..9706df0
--- /dev/null
@@ -0,0 +1,135 @@
+/*
+ * app_main - zavai main status display
+ *
+ * Copyright (C) 2009  Enrico Zini <enrico@enricozini.org>
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+using GLib;
+
+namespace zavai {
+namespace ui {
+namespace main {
+
+public class StatusBar : Gtk.HBox
+{
+    void StatusBar()
+    {
+    }
+}
+
+public class Clock : Gtk.VBox
+{
+    protected Gtk.Label l_date;
+    protected Gtk.Label l_time;
+
+    protected time_t last_gps_time;
+    protected time_t last_gps_time_system_time;
+    protected time_t last_system_time;
+       protected dynamic DBus.Object gps_time;
+    protected uint system_time_timeout;
+    protected time_t last_minute;
+
+    public Clock()
+    {
+        l_date = new Gtk.Label("--");
+        l_date.modify_font(Pango.FontDescription.from_string("Sans 20"));
+        pack_start(l_date, false, false, 0);
+        l_time = new Gtk.Label("--:--");
+        l_time.modify_font(Pango.FontDescription.from_string("Sans 28"));
+        pack_start(l_time, false, false, 0);
+
+stderr.printf("CLOCK\n");
+        last_minute = 0;
+        last_gps_time = 0;
+        last_gps_time_system_time = 0;
+        last_system_time = time_t();
+        
+               gps_time = zavai.registry.sbus.get_object(
+                       "org.freesmartphone.ogpsd",
+                       "/org/freedesktop/Gypsy",
+                       "org.freedesktop.Gypsy.Time");
+
+        system_time_timeout = Timeout.add(5000, on_system_time);
+               gps_time.TimeChanged += on_gps_time;
+        update_time();
+    }
+
+    public void update_time()
+    {
+        time_t new_last_minute;
+        string type;
+        if (last_gps_time_system_time + 10 > last_system_time)
+        {
+            new_last_minute = last_gps_time / 60;
+            type = "gps";
+        }
+        else
+        {
+            new_last_minute = last_system_time / 60;
+            type = "sys";
+        }
+        if (new_last_minute != last_minute)
+        {
+            last_minute = new_last_minute;
+            var t = Time.local(last_minute * 60);
+            l_date.set_text(t.format("%a %d %b"));
+            l_time.set_text("%2d:%02d (%s)".printf(t.hour, t.minute, type));
+        }
+    }
+
+       private void on_gps_time(dynamic DBus.Object pos, int t)
+       {
+               last_gps_time = (time_t)t;
+        last_gps_time_system_time = time_t();
+        update_time();
+       }
+
+    private bool on_system_time()
+    {
+        last_system_time = time_t();
+        update_time();
+        return true;
+    }
+}
+
+public class Status : Applet
+{
+    public Clock clock;
+    public AppletPushLink menu;
+
+       public Status(string label)
+       {
+               _label = label;
+        clock = new Clock();
+        menu = new AppletPushLink("menu.main");
+
+               pack_start(clock, false, false, 0);
+               pack_end(menu, false, false, 0);
+       }
+}
+
+Status status;
+
+public void init()
+{
+    status = new Status("Zavai");
+    zavai.registry.register_applet("zavai.status", status);
+}
+
+}
+}
+}
index 4ce8deb79945c05c40b313114a67e92bbd9d06ce..c7c99745467f729033cf49a9095bccc5c67714dd 100644 (file)
@@ -96,7 +96,7 @@ public class Monitor : zavai.Service
        static const int NAV_MAX=2;
 
        dynamic DBus.Object ubx;
-       dynamic DBus.Object time;
+       //dynamic DBus.Object time;
 
     public signal void sat_info(PtrArray< HashTable<string, Value?> > data);
 
index 56c357b29e24cf78257e2c98e5bd1805e9e02840..ab026ecde9246ca72e2c844e6c0cfb89ec319a90 100644 (file)
@@ -70,8 +70,10 @@ static int main (string[] args) {
        zavai.ui.wm.init();
        zavai.ui.polygen.init();
        zavai.ui.debug.init();
+       zavai.ui.main.init();
 
-       zavai.app.show_applet("menu.main");
+       //zavai.app.show_applet("menu.main");
+       zavai.app.show_applet("zavai.status");
 
        //zavai.ui.power.power_menu.toggle();