};
private Gdk.Pixbuf no_poster;
private MoviePoster.Factory poster_factory;
- public MovieSource source;
private MovieFilter filter;
public bool update_running { get; set; }
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;
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);
}
}
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) {
clear ();
- if (source != null)
+ if (source != null) {
// FIXME - arbitrary limit
- yield source.get_movies (filter, receive_movie, 100, cancellable);
+ int n = yield source.get_movies (filter, receive_movie, 100, cancellable);
+ search_finished (n);
+ }
update_running = false;
if (cancellable.is_cancelled ()) {
}
}
- private void receive_movie (Movie movie) {
+ private void receive_movie (SList<Movie> 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);
+ }
}
}