X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fmovie-list-store.vala;h=852690fa399e3206598d8a89d55d9b94c52294e1;hb=21336daab7ce7bacc8c826f292b30442ee18439d;hp=b77c138ab2f6a150414b810738fc846f9e234c2a;hpb=8201c1addb85d4f11daad12783cb5b410299534c;p=cinaest diff --git a/src/movie-list-store.vala b/src/movie-list-store.vala index b77c138..852690f 100644 --- a/src/movie-list-store.vala +++ b/src/movie-list-store.vala @@ -25,27 +25,41 @@ public class MovieListStore : ListStore, TreeModel { RATING, POSTER, MOVIE, + MARKUP, N_COLUMNS } private GLib.Type[] types = { typeof (string), typeof (int), - typeof (int), + typeof (string), typeof (Gdk.Pixbuf), - typeof (Movie) + typeof (Movie), + typeof (string) }; private GLib.Type[] base_type = { - typeof (Movie) + typeof (Movie), + typeof (string), // Markup: "Title (Year)" + typeof (string) // Rating }; private Gdk.Pixbuf no_poster; private MoviePoster.Factory poster_factory; - public MovieSource source; private MovieFilter filter; public bool update_running { get; set; } + public string year_markup = "[%d]"; private Cancellable cancellable; public signal void search_finished (int movies); + private MovieSource _source; + public MovieSource source { + get { + return _source; + } + set { + _source = value; + } + } + construct { set_column_types (base_type); no_poster = null; @@ -57,9 +71,17 @@ public class MovieListStore : ListStore, TreeModel { public void add (Movie movie, out TreeIter iter) { TreeIter iter1; + var markup = new StringBuilder (); + markup.append (Markup.escape_text (movie.title)); + if (movie.year > 0) { + markup.append (" "); + markup.append_printf (year_markup, movie.year); + } append (out iter1); - base.set (iter1, 0, movie); + base.set (iter1, 0, movie, + 1, markup.str, + 2, (movie.rating >= 0) ? "%d.%d".printf (movie.rating / 10, movie.rating % 10) : null); movie.notify.connect (this.on_movie_changed); @@ -73,7 +95,7 @@ public class MovieListStore : ListStore, TreeModel { movie.notify.disconnect (this.on_movie_changed); base.remove (iter); - if (source.get_editable ()) { + if (SourceFlags.EDITABLE in source.get_flags ()) { source.delete_movie (movie); } @@ -94,7 +116,7 @@ public class MovieListStore : ListStore, TreeModel { } public bool get_editable () { - return source.get_editable (); + return (SourceFlags.EDITABLE in source.get_flags ()); } public bool get_iter_from_movie (out TreeIter iter, Movie movie_a) { @@ -151,17 +173,19 @@ public class MovieListStore : ListStore, TreeModel { } } - private void receive_movie (Movie movie) { + private void receive_movie (SList movies) { TreeIter iter; if (cancellable.is_cancelled ()) return; - add (movie, out iter); - try { - poster_factory.queue_thumbnail (movie, 64, 64, false, receive_poster_thumbnail); - } catch (Error e) { - warning ("Failed to queue poster request: %s\n", e.message); + foreach (Movie movie in movies) { + add (movie, out iter); + try { + poster_factory.queue_thumbnail (movie, 64, 64, false, receive_poster_thumbnail); + } catch (Error e) { + warning ("Failed to queue poster request: %s\n", e.message); + } } } @@ -219,11 +243,7 @@ public class MovieListStore : ListStore, TreeModel { break; case Columns.RATING: - if (movie != null) { - value.set_int (movie.rating); - } else { - value.set_int (-1); - } + base.get_value (iter, 2, out value); break; case Columns.POSTER: @@ -237,6 +257,10 @@ public class MovieListStore : ListStore, TreeModel { value.set_object (movie); break; + case Columns.MARKUP: + base.get_value (iter, 1, out value); + break; + default: assert_not_reached (); }