Movie list menu: hide export movies button for non-editable sources
[cinaest] / src / movie-list-view.vala
index efb1c2e..b848884 100644 (file)
@@ -77,7 +77,20 @@ public class MovieListView : PannableArea {
                var selection = tree.get_selection ();
                selection.set_mode (SelectionMode.SINGLE);
 
-               // Title column with poster
+               // Poster column
+               var poster_column = new TreeViewColumn ();
+               poster_column.set_title (_("Poster"));
+
+               // Add poster icon to column
+               var pixbuf_renderer = new CellRendererPixbuf ();
+               pixbuf_renderer.width = Poster.ICON_WIDTH + Hildon.MARGIN_DEFAULT;
+               pixbuf_renderer.xalign = 0.0f;
+               poster_column.pack_start (pixbuf_renderer, false);
+               poster_column.add_attribute (pixbuf_renderer, "pixbuf", MovieListStore.Columns.ICON);
+
+               tree.append_column (poster_column);
+
+               // Title column with secondary text
                var title_column = new TreeViewColumn ();
                title_column.set_title (_("Movie"));
                title_column.set_sort_column_id (MovieListStore.Columns.TITLE);
@@ -85,13 +98,6 @@ public class MovieListView : PannableArea {
                title_column.set_sizing (TreeViewColumnSizing.AUTOSIZE);
                title_column.set_expand (true);
 
-               // Add poster icon to column
-               var pixbuf_renderer = new CellRendererPixbuf ();
-               pixbuf_renderer.width = 64;
-               pixbuf_renderer.xalign = 0.0f;
-               title_column.pack_start (pixbuf_renderer, false);
-               title_column.add_attribute (pixbuf_renderer, "pixbuf", MovieListStore.Columns.ICON);
-
                // Add text to column
                var vbox_renderer = new CellRendererVBox ();
 
@@ -191,6 +197,7 @@ public class MovieListView : PannableArea {
                tree.row_activated.connect (on_row_activated);
                icons.item_activated.connect (on_item_activated);
                store.row_changed.connect (on_row_changed);
+               store.row_inserted.connect (on_row_changed);
                store.search_finished.connect (on_search_finished);
        }
 
@@ -307,23 +314,33 @@ public class MovieListView : PannableArea {
                for (int i = a; i <= b; i++) {
                        var path = new TreePath.from_indices (i);
                        TreeIter iter;
-                       if (store.get_iter (out iter, path)) {
-                               Movie movie;
-                               store.get (iter, MovieListStore.Columns.MOVIE, out movie);
-                               if (movie != null) {
-                                       if (poster_mode_) {
-                                               if (movie.poster == null || movie.poster.small == null) try {
-                                                       poster_factory.queue_thumbnail (movie, Poster.SMALL_WIDTH, Poster.SMALL_HEIGHT, false, receive_poster_small);
-                                               } catch (Error e) {
-                                                       warning ("Failed to queue poster request: %s\n", e.message);
-                                               }
-                                       } else {
-                                               if (movie.poster == null || movie.poster.icon == null) try {
-                                                       poster_factory.queue_thumbnail (movie, Poster.ICON_WIDTH, Poster.ICON_HEIGHT, false, receive_poster_icon);
-                                               } catch (Error e) {
-                                                       warning ("Failed to queue poster request: %s\n", e.message);
-                                               }
-                                       }
+                       if (!store.get_iter (out iter, path))
+                               continue;
+
+                       Movie movie;
+                       store.get (iter, MovieListStore.Columns.MOVIE, out movie);
+                       if (movie == null)
+                               continue;
+
+                       if (poster_mode_) {
+                               if (movie.poster == null || movie.poster.small == null) try {
+                                       poster_factory.queue (movie,
+                                                             Poster.SMALL_WIDTH,
+                                                             Poster.SMALL_HEIGHT,
+                                                             true,
+                                                             receive_poster_small);
+                               } catch (Error e) {
+                                       warning ("Failed to queue poster request: %s\n", e.message);
+                               }
+                       } else {
+                               if (movie.poster == null || movie.poster.icon == null) try {
+                                       poster_factory.queue (movie,
+                                                             Poster.ICON_WIDTH,
+                                                             Poster.ICON_HEIGHT,
+                                                             true,
+                                                             receive_poster_icon);
+                               } catch (Error e) {
+                                       warning ("Failed to queue poster request: %s\n", e.message);
                                }
                        }
                }