}
class IMDBSource : MovieSource {
+ public override bool active { get; set construct; }
+
+ public IMDBSource () {
+ GLib.Object (active: true);
+ }
+
MovieSource.ReceiveMovieFunction _get_callback;
- public override async void get_movies (MovieFilter filter, MovieSource.ReceiveMovieFunction callback, int limit, Cancellable? cancellable) {
- // IMDb has too many movies
- if (filter.title == "" && filter.year_min == 0 && filter.year_max == 0 && filter.genres.field == 0 && filter.rating_min == 0)
- return;
+ public override async int get_movies (MovieFilter filter, MovieSource.ReceiveMovieFunction callback, int limit, Cancellable? cancellable) {
var sqlite = new IMDbSqlite (Path.build_filename (Environment.get_user_cache_dir (),
"cinaest", "imdb.db", null));
_get_callback = callback;
- yield sqlite.query (filter, receive_movie, limit, cancellable);
+ int n = yield sqlite.query (filter, receive_movie, limit, cancellable);
+ return n;
}
- private void receive_movie (string title, int year, int rating, int genres) {
+ private void receive_movie (string title, string? aka, int year, int rating, int genres) {
Movie movie = new Movie ();
movie.title = title;
movie.year = year;
movie.rating = rating;
movie.genres.field = genres;
// TODO - depending on settings, this could be something else, like director info or runtime
- movie.secondary = movie.genres.to_string ();
+ if (aka != null) {
+ movie.secondary = "aka \"%s\" - %s".printf (aka, movie.genres.to_string ());
+ } else {
+ movie.secondary = movie.genres.to_string ();
+ }
_get_callback (movie);
}
}
public override unowned string get_description () {
- return "Movies on IMDb";
+ return _("Movies on IMDb");
}
public override bool get_editable () {