Move the ListStore to the CustomVBox object
authorJavier Jardón <javier.jardon@codethink.co.uk>
Thu, 21 Apr 2011 15:52:28 +0000 (16:52 +0100)
committerJavier Jardón <javier.jardon@codethink.co.uk>
Thu, 21 Apr 2011 15:52:28 +0000 (16:52 +0100)
src/moonshot-custom-vbox.vala
src/moonshot-window.vala

index cc0f208..7db6e4c 100644 (file)
@@ -4,10 +4,33 @@ class CustomVBox : VBox
 {
     public IdCardWidget current_idcard { get; set; default = null; }
 
+    private ListStore listmodel;
+
+    private enum Columns
+    {
+        IDCARD_COL,
+        LOGO_COL,
+        ISSUER_COL,
+        USERNAME_COL,
+        PASSWORD_COL,
+        N_COLUMNS
+    }
+
+    private void setup_identities_list ()
+    {
+       this.listmodel = new ListStore (Columns.N_COLUMNS, typeof (IdCard),
+                                                          typeof (Gdk.Pixbuf),
+                                                          typeof (string),
+                                                          typeof (string),
+                                                          typeof (string));
+    }
+
     public CustomVBox (bool homogeneous, int spacing)
     {
         this.set_homogeneous (homogeneous);
         this.set_spacing (spacing);
+
+        setup_identities_list();
     }
 
     public void receive_expanded_event (IdCardWidget id_card_widget)
@@ -19,4 +42,45 @@ class CustomVBox : VBox
                 ((IdCardWidget) id_card).collapse ();
         }
     }
+
+    public void add_id_card_widget (IdCardWidget id_card_widget)
+    {
+        TreeIter iter;
+
+        this.pack_start (id_card_widget, false, false);
+
+        var id_card = id_card_widget.id_card;
+
+        this.listmodel.append (out iter);
+        listmodel.set (iter,
+                       Columns.IDCARD_COL, id_card,
+                       Columns.LOGO_COL, id_card.pixbuf,
+                       Columns.ISSUER_COL, id_card.issuer,
+                       Columns.USERNAME_COL, id_card.username,
+                       Columns.PASSWORD_COL, id_card.password);
+    }
+
+    public void remove_id_card_widget (IdCardWidget id_card_widget)
+    {
+        TreeIter iter;
+        string issuer;
+
+        this.remove (id_card_widget);
+
+        if (listmodel.get_iter_first (out iter))
+        {
+            do
+            {
+                listmodel.get (iter,
+                               Columns.ISSUER_COL, out issuer);
+
+                if (id_card_widget.id_card.issuer == issuer)
+                {
+                    listmodel.remove (iter);
+                    break;
+                }
+            }
+            while (listmodel.iter_next (ref iter));
+        }
+    }
 }
index 3659bf1..74073df 100644 (file)
@@ -127,26 +127,16 @@ class MainWindow : Window
 
     private void add_identity (AddIdentityDialog dialog)
     {
-        TreeIter iter;
-
         var id_card = get_id_card_data (dialog);
 
         var id_card_widget = new IdCardWidget (id_card);
 
-        this.custom_vbox.pack_start (id_card_widget, false, false);
+        this.custom_vbox.add_id_card_widget (id_card_widget);
 
         id_card_widget.details_id.connect (details_identity_cb);
         id_card_widget.remove_id.connect (remove_identity_cb);
         id_card_widget.expanded.connect (this.custom_vbox.receive_expanded_event);
         id_card_widget.expanded.connect (fill_details);
-
-        this.listmodel.append (out iter);
-        listmodel.set (iter,
-                       Columns.IDCARD_COL, id_card,
-                       Columns.LOGO_COL, id_card.pixbuf,
-                       Columns.ISSUER_COL, id_card.issuer,
-                       Columns.USERNAME_COL, id_card.username,
-                       Columns.PASSWORD_COL, id_card.password);
     }
 
     private void add_identity_cb ()
@@ -166,26 +156,7 @@ class MainWindow : Window
 
     private void remove_identity (IdCardWidget id_card_widget)
     {
-        TreeIter iter;
-        string issuer;
-
-        custom_vbox.remove (id_card_widget);
-
-        if (listmodel.get_iter_first (out iter))
-        {
-            do
-            {
-                listmodel.get (iter,
-                               Columns.ISSUER_COL, out issuer);
-
-                if (id_card_widget.id_card.issuer == issuer)
-                {
-                    listmodel.remove (iter);
-                    break;
-                }
-            }
-            while (listmodel.iter_next (ref iter));
-        }
+        this.custom_vbox.remove_id_card_widget (id_card_widget);
     }
 
     private void remove_identity_cb (IdCardWidget id_card_widget)