X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fmovie-list-view.vala;h=efb1c2e07861ced35a0e35daba3eb96a9a57ce68;hb=496ca82635f6e53bd37a97bbb99d2cf7ae5b0829;hp=d92a535088ec75beebc4a684566ed3b4c68dbc47;hpb=ae174d7d712d36c2ba91a9d073db3996f95dd706;p=cinaest diff --git a/src/movie-list-view.vala b/src/movie-list-view.vala index d92a535..efb1c2e 100644 --- a/src/movie-list-view.vala +++ b/src/movie-list-view.vala @@ -30,6 +30,8 @@ public class MovieListView : PannableArea { private CellRendererText rating_renderer; private CellRendererText date_renderer; private MoviePoster.Factory poster_factory; + private int last_a = -1; + private int last_b = -1; private bool poster_mode_; public bool poster_mode { @@ -39,12 +41,27 @@ public class MovieListView : PannableArea { set { if (value & !poster_mode_) { remove (tree); + tree.set_model (null); + icons.set_model (store); + store.view = (Widget) icons; add (icons); } else if (!value & poster_mode_) { remove (icons); + icons.set_model (null); + tree.set_model (store); + store.view = (Widget) tree; add (tree); } - poster_mode_ = value; + if (value != poster_mode_) { + poster_mode_ = value; + last_a = -1; + last_b = -1; + + // FIXME - just calling on_adjustment_value_changed () here doesn't work + // because icons.get_visible_range () returns wrong paths. + check_posters (0, 10); + jump_to (0, 0); + } } } @@ -138,7 +155,7 @@ public class MovieListView : PannableArea { } private Gtk.IconView create_iconview () { - var iconview = (Gtk.IconView) Hildon.gtk_icon_view_new_with_model (Hildon.UIMode.NORMAL, store); + var iconview = (Gtk.IconView) Hildon.gtk_icon_view_new (Hildon.UIMode.NORMAL); iconview.set_column_spacing (0); iconview.set_pixbuf_column (MovieListStore.Columns.POSTER); iconview.margin = 0; @@ -163,6 +180,7 @@ public class MovieListView : PannableArea { } tree = create_treeview (window, show_date); + store.view = (Widget) tree; icons = create_iconview (); @@ -246,8 +264,6 @@ public class MovieListView : PannableArea { // TODO: after scrolling down 80% of the list, load more // results if available. - int last_a = 0; - int last_b = 0; private void on_adjustment_value_changed () { if (more_movies_available) { var vadj = get_vadjustment (); @@ -357,6 +373,7 @@ public class MovieListView : PannableArea { else poster = new Poster (); poster.small = pixbuf; + // Notify store of the poster change movie.poster = poster; } @@ -367,6 +384,7 @@ public class MovieListView : PannableArea { else poster = new Poster (); poster.icon = pixbuf; + // Notify store of the poster change movie.poster = poster; }