745c0d82d0d231d83c977b61c40946d7d9f5dd4a
[debian/pino.git] / src / feed_view.vala
1 using Gtk;
2
3 /** Here we view all our statuses from one feed */
4 public class FeedView : ScrolledWindow {
5         
6         private VBox vbox;
7         private FeedModel model;
8         
9         public FeedView() {
10                 set_policy(PolicyType.AUTOMATIC, PolicyType.ALWAYS);
11                 
12                 vbox = new VBox(false, 2);
13                 add_with_viewport(vbox);
14         }
15         
16         public void set_model(FeedModel model) {
17                 this.model = model;
18                 
19                 foreach(Status status in model) {
20                         add_item(status);
21                 }
22                 
23                 this.model.status_added.connect((status) => { add_item(status); });
24                 this.model.status_inserted.connect(insert_item);
25                 this.model.status_removed.connect(remove_item);
26         }
27         
28         private StatusDelegate new_delegate(Status status) {
29                 StatusDelegate widget = new StatusDelegate(status);
30                 widget.show_all();
31                 debug("ok");
32                 return widget;
33         }
34         
35         public StatusDelegate add_item(Status status) {
36                 StatusDelegate widget = new_delegate(status);
37                 vbox.pack_start(widget, false, false, 0);
38                 
39                 return widget;
40         }
41         
42         public void insert_item(int index, Status status) {
43                 StatusDelegate widget = add_item(status);
44                 vbox.reorder_child(widget, index);
45         }
46         
47         public void remove_item(int index) {
48                 Widget widget = vbox.get_children().nth_data(index);
49                 vbox.remove(widget);
50         }
51 }