class IMDbPlugin : Plugin {
private dynamic DBus.Object server;
+ List<MovieSource> sources;
public override void hello (Gtk.Window window) {
string filename = Path.build_filename (Environment.get_user_cache_dir(),
download_imdb (window);
}
}
- }
- public override void get_movies (string filter, Plugin.ReceiveMovieFunction callback, int limit) {
- }
+ var source = new IMDBSource ();
- public override void add_movie (Movie movie) {
+ sources = new List<MovieSource> ();
+ sources.append (source);
}
private void download_imdb (Gtk.Window window) {
download.destroy ();
}
}
+
+ public override unowned List<MovieSource> get_sources () {
+ return sources;
+ }
+}
+
+class IMDBSource : MovieSource {
+ MovieSource.ReceiveMovieFunction _get_callback;
+ public override void get_movies (string filter, MovieSource.ReceiveMovieFunction callback, int limit) {
+ var sqlite = new IMDbSqlite (Path.build_filename (Environment.get_user_cache_dir (),
+ "cinaest", "imdb.db", null));
+
+ _get_callback = callback;
+ sqlite.query (filter, receive_movie);
+ }
+
+ private void receive_movie (string title, int year, int rating) {
+ Movie movie = new Movie ();
+ movie.title = title;
+ movie.year = year;
+ movie.rating = rating;
+ _get_callback (movie);
+ }
+
+ public override void add_movie (Movie movie) {
+ }
+
+ public override unowned string get_name () {
+ return "IMDb";
+ }
+
+ public override unowned string get_description () {
+ return "Movies on IMDb";
+ }
}
[ModuleInit]