start wifi statusicon
[gregoa/zavai.git] / src / app_wifi.vala
index b694be5c5265a0b48f99fd3e87f84b8db4fb54f9..57d22d5746923c26c2588a116336a8ee17aa5b68 100644 (file)
@@ -24,10 +24,57 @@ namespace zavai {
 namespace ui {
 namespace wifi {
 
+public class WifiIcon : Gtk.StatusIcon
+{
+    bool requested = false;
+
+    public WifiIcon()
+    {
+        activate += on_activate;
+        update_icon();
+    }
+
+    private void on_activate()
+    {
+        requested = !requested;
+        update_icon();
+        if (requested)
+        {
+            //zavai.wifi.wifi.start();
+            stderr.printf("wifi should be started here\n");
+            stderr.printf("wifi status: %d\n", (int) zavai.wifi.wifi.started);
+        }
+        else
+        {
+            //zavai.wifi.wifi.stop();
+            stderr.printf("wifi should be stopped here\n");
+            stderr.printf("wifi status: %d\n", (int) zavai.wifi.wifi.started);
+        }
+    }
+
+    protected void update_icon()
+    {
+        string name = zavai.config.icondir + "/";
+        name += (active() ? "wifi_1.png" : "wifi_0.png");
+        stderr.printf("load icon from %s\n", name);
+        set_from_file(name);
+    }
+
+    private bool active()
+    {
+        return zavai.wifi.wifi.started;
+    }
+}
+
+WifiIcon icon;
+
 public void init()
 {
     // Menus
     zavai.menu_misc.add_service_toggle(zavai.wifi.wifi, "Start Wifi", "Stop Wifi");
+    // Icon
+    icon = new WifiIcon();
+    icon.set_visible(true);
 }
 
 }