StatusIcon.vala
authorAlan Knowles <alan@roojs.com>
Wed, 27 Sep 2017 06:33:40 +0000 (14:33 +0800)
committerAlan Knowles <alan@roojs.com>
Wed, 27 Sep 2017 06:33:40 +0000 (14:33 +0800)
StatusIcon.vala

index feace50..a4f5cfd 100644 (file)
@@ -301,60 +301,57 @@ public class StatusIconA : StatusIcon {
                 GitMonitor.gitmonitor.stop();
                     
                 
-                var total = tr.length;
+               this.total = tr.length;
                 
                 for (var i= 0; i< tr.length;i++) {
                     statusicon.set_from_stock( 
                                i%2 == 0 ?  Gtk.Stock.FULLSCREEN : Gtk.Stock.LEAVE_FULLSCREEN );
                             
                     var repo = tr.index(i);
-                    //if (!repo.autocommit()) {
-                        //??? should we ignore ones not on autocommit..
-                    //    continue;
-                    //}
-                    //try {
-                        statusicon.set_tooltip_text("pull: " + repo.name);
-                        var str = "";
-                        repo.pull_async((res) => {
-                        
-                               total--;
-                               if (!Regex.match_simple ("Already up-to-date", res) ) {
-                                        
-                               
-                                               str += str.length > 0 ? "\n" : "";
-                                               str += "Updated: " +repo.name + "\n" + res +"\n";
-                                       }
-                                       if (total < 1) {
-                                       var notification = new Notify.Notification( 
-                                            "Pull completed ",
-                                            str,
-                                            "dialog-information"
-                                       );
-                                       notification.set_timeout(20);
-                                       notification.show();
-                                       statusicon.set_tooltip_text("Gitlive");
-                             
-                            
-                                               GitMonitor.gitmonitor.start();
-                               }
-                        });
-                                // do not care if it's already in sycn..
-                        
+                    //repo.ref();
+                    //this.ref();
                     
-                       
-                                 
-                    //} catch(Error e) {
-                   //     print("notification or push errror- probably to many in queue..");
-                    //    statusicon.set_from_stock( Gtk.Stock.MEDIA_RECORD );
-                    //    print(e.message);
+                    statusicon.set_tooltip_text("pull: " + repo.name);
+                    repo.pull_async(this.pullAllCallback); 
+                                // do not care if it's already in sycn..
                         
-                   // }        
+                     
 
                 } 
 
                   
         
         
+               }
+               uint total = 0; 
+               
+               void pullAllCallback(GitRepo repo, string res)
+               {
+                       this.total--;
+                       if (!Regex.match_simple ("Already up-to-date", res) ) {
+                     
+                       
+                       ret_str += ret_str.length > 0 ? "\n" : "";
+                       ret_str += "Updated: " +repo.name + "\n" + res +"\n";
+                       }
+                       if (this.total < 1) {
+                               var notification = new Notify.Notification( 
+                         "Pull completed ",
+                         ret_str,
+                            "dialog-information"
+                    );
+                    notification.set_timeout(20);
+                               notification.show();
+                               statusicon.set_tooltip_text("Gitlive");
+                 
+                
+                               GitMonitor.gitmonitor.start();
+                               //this.unref();
+                               //repo.unref();
+                       }
+                       
                }