+public class GPSTrayIcon : Gtk.StatusIcon
+{
+ bool requested = false;
+ int fix_status = 0;
+
+ public string icon_fname()
+ {
+ if (fix_status == 2 || fix_status == 3)
+ return zavai.config.icondir + "/" + (requested ? "gps_fix_on.png" : "gps_fix_off.png");
+ else
+ return zavai.config.icondir + "/" + (requested ? "gps_nofix_on.png" : "gps_nofix_off.png");
+ }
+
+ public GPSTrayIcon()
+ {
+ //tooltip = "GPS status";
+stderr.printf("ZAZAZA\n");
+ try {
+ fix_status = zavai.gps.gps.device.GetFixStatus();
+ } catch (Error e) {
+stderr.printf("MRDMRDMRD\n");
+ }
+stderr.printf("NAME %s\n", icon_fname());
+ set_from_file(icon_fname());
+ activate += on_activate;
+ zavai.gps.gps.device.FixStatusChanged += on_fix_status_changed;
+ }
+
+ void on_fix_status_changed(dynamic DBus.Object pos, int fix_status)
+ {
+ this.fix_status = fix_status;
+ set_from_file(icon_fname());
+ }
+
+ void on_activate()
+ {
+ if (!requested)
+ zavai.gps.gps.request("gpstrayicon");
+ else
+ zavai.gps.gps.release("gpstrayicon");
+ requested = !requested;
+ set_from_file(icon_fname());
+ }
+}
+
+public GPSTrayIcon tray_icon = null;
+