3 class CustomVBox : VBox
5 public IdCardWidget current_idcard { get; set; default = null; }
7 private ListStore listmodel;
8 private TreeModelFilter filter;
10 private string search_text;
22 private bool visible_func (TreeModel model, TreeIter iter)
25 string issuer_casefold;
26 string search_text_casefold;
29 Columns.ISSUER_COL, out issuer);
31 issuer_casefold = issuer.casefold ();
32 search_text_casefold = search_text.casefold ();
34 if (issuer_casefold.contains (search_text_casefold))
40 private void setup_identities_list ()
42 this.listmodel = new ListStore (Columns.N_COLUMNS, typeof (IdCard),
47 this.filter = new TreeModelFilter (listmodel, null);
49 filter.set_visible_func (visible_func);
52 public CustomVBox (bool homogeneous, int spacing)
54 this.set_homogeneous (homogeneous);
55 this.set_spacing (spacing);
57 setup_identities_list();
60 public void new_text_in_search_entry (string search_text)
62 this.search_text = search_text;
67 public void receive_expanded_event (IdCardWidget id_card_widget)
69 var list = this.get_children ();
70 foreach (Widget id_card in list)
72 if (id_card != id_card_widget)
73 ((IdCardWidget) id_card).collapse ();
77 public void add_id_card_widget (IdCardWidget id_card_widget)
81 this.pack_start (id_card_widget, false, false);
83 var id_card = id_card_widget.id_card;
85 this.listmodel.append (out iter);
87 Columns.IDCARD_COL, id_card,
88 Columns.LOGO_COL, id_card.pixbuf,
89 Columns.ISSUER_COL, id_card.issuer,
90 Columns.USERNAME_COL, id_card.username,
91 Columns.PASSWORD_COL, id_card.password);
94 public void remove_id_card_widget (IdCardWidget id_card_widget)
99 this.remove (id_card_widget);
101 if (listmodel.get_iter_first (out iter))
106 Columns.ISSUER_COL, out issuer);
108 if (id_card_widget.id_card.issuer == issuer)
110 listmodel.remove (iter);
114 while (listmodel.iter_next (ref iter));