+
+ // Connect signals
+ tree.row_activated.connect (on_row_activated);
+ }
+
+ public void set_hildon_ui_mode (UIMode mode) {
+ var selection = tree.get_selection ();
+
+ if (mode == UIMode.NORMAL) {
+ selection.set_mode (SelectionMode.NONE);
+ }
+ Hildon.gtk_tree_view_set_ui_mode (tree, mode);
+ if (mode == UIMode.EDIT) {
+ selection.set_mode (SelectionMode.MULTIPLE);
+ }
+ }
+
+ public unowned TreeSelection get_selection () {
+ return tree.get_selection ();
+ }
+
+ private void on_row_activated (TreeView tree, TreePath path_, TreeViewColumn column) {
+ TreePath path = path_.copy (); // FIXME - calling model.get_iter with path_ directly causes a C qualifier warning
+ TreeModel model = tree.model;
+ TreeIter iter;
+
+ if (model.get_iter (out iter, path)) {
+ Movie movie;
+ model.get (iter, MovieListStore.Columns.MOVIE, out movie);
+ movie_activated (movie);
+ }
+ }
+
+ private void vbox_data_func (CellLayout cell_layout, CellRenderer cell, TreeModel model, TreeIter iter) {
+ Movie movie;
+ CellRendererText renderer;
+
+ model.get (iter, MovieListStore.Columns.MOVIE, out movie);
+
+ renderer = (CellRendererText) cell.get_data ("title");
+ renderer.text = movie.title;
+
+ renderer = (CellRendererText) cell.get_data ("secondary");
+ renderer.text = movie.secondary;
+ }
+
+ private void year_data_func (CellLayout cell_layout, CellRenderer cell, TreeModel model, TreeIter iter) {
+ int year;
+
+ model.get (iter, MovieListStore.Columns.YEAR, out year);
+ ((CellRendererText) cell).text = (year > 0) ? year.to_string () : "";