From: Javier Jardón Date: Thu, 21 Apr 2011 11:29:30 +0000 (+0100) Subject: Use a ListStore to store the data X-Git-Tag: debian/0.0.2+20110913-1~36 X-Git-Url: http://www.project-moonshot.org/gitweb/?a=commitdiff_plain;h=9d4a9a6ef52ddbff2b72c85758778cc9daeb74d9;p=moonshot-ui.git Use a ListStore to store the data For now we consider the "issuer" field unique --- diff --git a/src/moonshot-window.vala b/src/moonshot-window.vala index 1e47e0c..3659bf1 100644 --- a/src/moonshot-window.vala +++ b/src/moonshot-window.vala @@ -12,11 +12,15 @@ class MainWindow : Window private Entry username_entry; private Entry password_entry; + private ListStore listmodel; + private enum Columns { IDCARD_COL, LOGO_COL, - NAME_COL, + ISSUER_COL, + USERNAME_COL, + PASSWORD_COL, N_COLUMNS } @@ -27,6 +31,7 @@ class MainWindow : Window set_default_size (WINDOW_WIDTH, WINDOW_HEIGHT); build_ui(); + setup_identities_list(); connect_signals(); } @@ -62,6 +67,15 @@ class MainWindow : Window return false; } + private void setup_identities_list () + { + this.listmodel = new ListStore (Columns.N_COLUMNS, typeof (IdCard), + typeof (Gdk.Pixbuf), + typeof (string), + typeof (string), + typeof (string)); + } + private void fill_details (IdCardWidget id_card_widget) { var id_card = id_card_widget.id_card; @@ -113,6 +127,8 @@ 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); @@ -123,6 +139,14 @@ class MainWindow : Window 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 () @@ -142,7 +166,26 @@ 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)); + } } private void remove_identity_cb (IdCardWidget id_card_widget)