public bool update_running { get; set; }
private Cancellable cancellable;
+ public signal void search_finished (int movies);
+
construct {
set_column_types (base_type);
no_poster = null;
iter = iter1;
}
+ public new bool remove (Movie movie) {
+ TreeIter iter;
+
+ if (get_iter_from_movie (out iter, movie)) {
+ movie.notify.disconnect (this.on_movie_changed);
+ base.remove (iter);
+
+ if (source.get_editable ()) {
+ source.delete_movie (movie);
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
private void on_movie_changed (GLib.Object source, GLib.ParamSpec spec) {
var movie = (Movie) source;
}
}
+ public bool get_editable () {
+ return source.get_editable ();
+ }
+
public bool get_iter_from_movie (out TreeIter iter, Movie movie_a) {
if (get_iter_first (out iter)) {
do {
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 ()) {