X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fsystemadm.vala;h=2f3aed205af7d0876a1af5e95f012e2b9b5ce84e;hp=3610e2b8f42a31ff8fa8fb199341a2db0a6c7c3f;hb=0ebd74d8d9ffc4ea47cc8fe8798466bdf4e6967f;hpb=d3d91d10c9ca3782c5936c630e87730e3bf9c32d diff --git a/src/systemadm.vala b/src/systemadm.vala index 3610e2b8f..2f3aed205 100644 --- a/src/systemadm.vala +++ b/src/systemadm.vala @@ -325,13 +325,19 @@ public class MainWindow : Window { foreach (var i in list) { TreeIter iter; + Properties p = bus.get_object( + "org.freedesktop.systemd1", + i.unit_path, + "org.freedesktop.DBus.Properties") as Properties; + + + p.properties_changed.connect(on_unit_changed); + Unit u = bus.get_object( "org.freedesktop.systemd1", i.unit_path, "org.freedesktop.systemd1.Unit") as Unit; - u.changed.connect(on_unit_changed); - unit_model.append(out iter); unit_model.set(iter, 0, i.id, @@ -352,13 +358,18 @@ public class MainWindow : Window { foreach (var i in list) { TreeIter iter; + Properties p = bus.get_object( + "org.freedesktop.systemd1", + i.job_path, + "org.freedesktop.DBus.Properties") as Properties; + + p.properties_changed.connect(on_job_changed); + Job j = bus.get_object( "org.freedesktop.systemd1", i.job_path, "org.freedesktop.systemd1.Job") as Job; - j.changed.connect(on_job_changed); - job_model.append(out iter); job_model.set(iter, 0, "%u".printf(i.id), @@ -672,15 +683,21 @@ public class MainWindow : Window { } public void on_unit_new(string id, ObjectPath path) { - Unit u = bus.get_object( + Properties p = bus.get_object( "org.freedesktop.systemd1", path, - "org.freedesktop.systemd1.Unit") as Unit; + "org.freedesktop.DBus.Properties") as Properties; - u.changed.connect(on_unit_changed); + p.properties_changed.connect(on_unit_changed); TreeIter iter; unit_model.append(out iter); + + Unit u = bus.get_object( + "org.freedesktop.systemd1", + path, + "org.freedesktop.systemd1.Unit") as Unit; + update_unit_iter(iter, id, u); } @@ -695,15 +712,22 @@ public class MainWindow : Window { } public void on_job_new(uint32 id, ObjectPath path) { - Job j = bus.get_object( + + Properties p = bus.get_object( "org.freedesktop.systemd1", path, - "org.freedesktop.systemd1.Job") as Job; + "org.freedesktop.DBus.Properties") as Properties; - j.changed.connect(on_job_changed); + p.properties_changed.connect(on_job_changed); TreeIter iter; job_model.append(out iter); + + Job j = bus.get_object( + "org.freedesktop.systemd1", + path, + "org.freedesktop.systemd1.Job") as Job; + update_job_iter(iter, id, j); } @@ -750,10 +774,15 @@ public class MainWindow : Window { } while (job_model.iter_next(ref iter)); } - public void on_unit_changed(Unit u) { + public void on_unit_changed(Properties p, string iface, HashTable changed_properties, string[] invalidated_properties) { TreeIter iter; string id; + Unit u = bus.get_object( + p.get_bus_name(), + p.get_path(), + "org.freedesktop.systemd1.Unit") as Unit; + if (!(unit_model.get_iter_first(out iter))) return; @@ -776,10 +805,15 @@ public class MainWindow : Window { } while (unit_model.iter_next(ref iter)); } - public void on_job_changed(Job j) { + public void on_job_changed(Properties p, string iface, HashTable changed_properties, string[] invalidated_properties) { TreeIter iter; uint32 id; + Job j = bus.get_object( + p.get_bus_name(), + p.get_path(), + "org.freedesktop.systemd1.Job") as Job; + if (!(job_model.get_iter_first(out iter))) return; @@ -944,7 +978,7 @@ void show_error(string e) { m.destroy(); } -int main (string[] args) { +int main(string[] args) { try { Gtk.init_with_args(ref args, "[OPTION...]", entries, "systemadm");