chiark / gitweb /
job: show failure message only for start jobs
[elogind.git] / src / systemadm.vala
index 3610e2b8f42a31ff8fa8fb199341a2db0a6c7c3f..2f3aed205af7d0876a1af5e95f012e2b9b5ce84e 100644 (file)
@@ -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<string, Value?> 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<string, Value?> 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");