public bool update_running { get; set; }
public string year_markup = "<span size=\"small\">[%d]</span>";
private Cancellable cancellable;
+ public Widget view;
public signal void search_finished (int movies);
markup.append_printf (year_markup, movie.year);
}
- append (out iter1);
- base.set (iter1, 0, movie,
- 1, markup.str,
- 2, (movie.rating >= 0) ? "%d.%d".printf (movie.rating / 10, movie.rating % 10) : null);
+ base.insert_with_values (out iter1, -1,
+ 0, movie,
+ 1, markup.str,
+ 2, rating_string (movie.rating));
movie.notify.connect (this.on_movie_changed);
iter = iter1;
}
+ private string? rating_string (int rating) {
+ if (rating >= 0) {
+ return "%d.%d".printf (rating / 10,
+ rating % 10);
+ } else {
+ return null;
+ }
+ }
+
public new bool remove (Movie movie) {
TreeIter iter;
if (cancellable.is_cancelled ())
return;
- foreach (Movie movie in movies) {
+ view.freeze_child_notify ();
+ foreach (Movie movie in movies)
add (movie, out iter);
- try {
- poster_factory.queue_thumbnail (movie, Poster.ICON_WIDTH, Poster.ICON_HEIGHT, false, receive_poster_icon);
- 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);
- }
- }
- }
-
- private void receive_poster_icon (Gdk.Pixbuf pixbuf, Movie movie) {
- var poster = new Poster ();
- poster.icon = pixbuf;
- movie.poster = poster;
+ view.thaw_child_notify ();
}
- private void receive_poster_small (Gdk.Pixbuf pixbuf, Movie movie) {
- var poster = new Poster ();
- if (movie.poster != null && movie.poster.icon != null)
- poster.icon = movie.poster.icon;
- poster.small = pixbuf;
- movie.poster = poster;
- }
-
// Implement TreeModel interface
public virtual GLib.Type get_column_type (int index_) {
return_val_if_fail (index_ >= 0 && index_ < Columns.N_COLUMNS, 0);
public virtual void get_value (TreeIter iter, int column, out GLib.Value value) {
Movie movie;
- // FIXME
- if (no_poster == null) try {
- no_poster = new Gdk.Pixbuf.from_file ("/usr/share/icons/hicolor/64x64/hildon/general_video.png");
- } catch (Error e) {
- critical ("Missing general_video icon: %s\n", e.message);
- }
-
return_if_fail (column >= 0 && column < Columns.N_COLUMNS);
// Get the Movie from our parent's storage
break;
case Columns.POSTER:
- if ((movie.poster != null) && (movie.poster.small != null))
+ if ((movie.poster != null) && (movie.poster.small != null)) {
value.set_object (movie.poster.small);
- else
+ } else {
+ // FIXME
+ if (no_poster == null) try {
+ // var no_pic = new Gdk.Pixbuf.from_file ("/usr/share/icons/hicolor/64x64/hildon/imageviewer_no_pic.png");
+ var no_pic = new Gdk.Pixbuf.from_file ("/usr/share/icons/hicolor/64x64/hildon/general_no_thumbnail.png");
+ no_poster = new Gdk.Pixbuf (Gdk.Colorspace.RGB, true, 8, Poster.SMALL_WIDTH, Poster.SMALL_HEIGHT);
+ no_poster.fill (0);
+ no_pic.copy_area (0, 0, no_pic.width, no_pic.height, no_poster,
+ (Poster.SMALL_WIDTH - no_pic.width) / 2, (Poster.SMALL_HEIGHT - no_pic.height) / 2);
+ } catch (Error e) {
+ critical ("Missing general_video icon: %s\n", e.message);
+ }
value.set_object (no_poster);
+ }
break;
case Columns.ICON:
- if ((movie.poster != null) && (movie.poster.icon != null))
+ if ((movie.poster != null) && (movie.poster.icon != null)) {
value.set_object (movie.poster.icon);
- else
- value.set_object (no_poster);
+ } else {
+ value.set_object (null);
+ }
break;
case Columns.MOVIE: