[gnome-boxes/wip/show-activity: 3/3] tmp



commit 5660a7a8eae8c1aced8c21143120fbc5b9613185
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date:   Fri Jun 14 00:29:01 2013 +0300

    tmp

 libgd                    |    2 +-
 src/collection-view.vala |   35 +++++++++++++++++++++++++++++------
 2 files changed, 30 insertions(+), 7 deletions(-)
---
diff --git a/libgd b/libgd
index 9a9e75b..3b05b7b 160000
--- a/libgd
+++ b/libgd
@@ -1 +1 @@
-Subproject commit 9a9e75ba36e1ed025d24bfdc1c7cdd164a4d3fc0
+Subproject commit 3b05b7b3e0e33c1fe4299331dcf2a7db097609dc
diff --git a/src/collection-view.vala b/src/collection-view.vala
index eff721a..c249fa3 100644
--- a/src/collection-view.vala
+++ b/src/collection-view.vala
@@ -26,7 +26,7 @@ private class Boxes.CollectionView: Boxes.UI {
         TITLE = Gd.MainColumns.PRIMARY_TEXT,
         INFO = Gd.MainColumns.SECONDARY_TEXT,
         SELECTED = Gd.MainColumns.SELECTED,
-        UNDER_CONSTRUCTION = Gd.MainColumns.SHOW_ACTIVITY,
+        PULSE = Gd.MainColumns.PULSE,
         ITEM = Gd.MainColumns.LAST,
 
         LAST
@@ -124,7 +124,6 @@ private class Boxes.CollectionView: Boxes.UI {
 
     private Gtk.TreeIter append (string title,
                                  string? info,
-                                 bool under_construction,
                                  CollectionItem item) {
         Gtk.TreeIter iter;
 
@@ -135,7 +134,6 @@ private class Boxes.CollectionView: Boxes.UI {
             model.set (iter, ModelColumns.INFO, info);
         model.set (iter, ModelColumns.SELECTED, false);
         model.set (iter, ModelColumns.ITEM, item);
-        model.set (iter, ModelColumns.UNDER_CONSTRUCTION, under_construction);
         update_screenshot (iter);
 
         item.set_data<Gtk.TreeIter?> ("iter", iter);
@@ -151,7 +149,7 @@ private class Boxes.CollectionView: Boxes.UI {
             return;
         }
 
-        var iter = append (machine.name, machine.info,  machine.under_construction, item);
+        var iter = append (machine.name, machine.info,  item);
         var pixbuf_id = machine.notify["pixbuf"].connect (() => {
             // apparently iter is stable after insertion/removal/sort
             update_screenshot (iter);
@@ -178,9 +176,10 @@ private class Boxes.CollectionView: Boxes.UI {
         });
         item.set_data<ulong> ("info_id", info_id);
 
+        setup_activity (iter, machine);
         var under_construct_id = machine.notify["under-construction"].connect (() => {
             // apparently iter is stable after insertion/removal/sort
-            model.set (iter, ModelColumns.UNDER_CONSTRUCTION, machine.under_construction);
+            setup_activity (iter, machine);
             main_view.queue_draw ();
         });
         item.set_data<ulong> ("under_construct_id", under_construct_id);
@@ -191,6 +190,30 @@ private class Boxes.CollectionView: Boxes.UI {
         update_item_visible (item);
     }
 
+    private void setup_activity (Gtk.TreeIter iter, Machine machine) {
+        var activity_timeout = machine.get_data<uint> ("activity_timeout");
+        if (activity_timeout > 0) {
+            Source.remove (activity_timeout);
+            machine.set_data<uint> ("activity_timeout", 0);
+        }
+
+        if (!machine.under_construction) {
+            model.set (iter, ModelColumns.PULSE, int.MAX);
+
+            return;
+        }
+
+        int pulse = 0;
+        model.set (iter, ModelColumns.PULSE, pulse++);
+        activity_timeout = Timeout.add (100, () => {
+            model.set (iter, ModelColumns.PULSE, pulse++);
+            main_view.queue_draw ();
+
+            return true;
+        });
+        machine.set_data<uint> ("activity_timeout", activity_timeout);
+    }
+
     public List<CollectionItem> get_selected_items () {
         var selected = new List<CollectionItem> ();
 
@@ -294,7 +317,7 @@ private class Boxes.CollectionView: Boxes.UI {
                                    typeof (Gdk.Pixbuf),
                                    typeof (long),
                                    typeof (bool),
-                                   typeof (bool),
+                                   typeof (int),
                                    typeof (CollectionItem));
         model.set_default_sort_func ((model, a, b) => {
             CollectionItem item_a, item_b;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]