Add movie action class
authorPhilipp Zabel <philipp.zabel@gmail.com>
Thu, 12 Nov 2009 14:17:01 +0000 (15:17 +0100)
committerPhilipp Zabel <philipp.zabel@gmail.com>
Thu, 12 Nov 2009 18:23:25 +0000 (19:23 +0100)
This wrapper is needed because delegate cannot be passed around in Lists
(and would be missing the name property).
The plugin returns a list of actions supported on a given movie.

src/plugin-interface.vala
src/plugins/google-plugin.vala
src/plugins/imdb-plugin.vala

index 70c73d5..27ebcd3 100644 (file)
@@ -20,6 +20,7 @@ public abstract class Plugin : Object {
        public abstract void hello (Gtk.Window window, Osso.Context context);
 
        public abstract unowned List<MovieSource> get_sources ();
+       public abstract List<MovieAction> get_actions (Movie movie);
 
        public abstract void settings_dialog (Gtk.Window window);
 
@@ -38,3 +39,20 @@ public abstract class MovieSource : Object {
        public abstract unowned string get_description ();
 }
 
+public class MovieAction : Object {
+       public delegate void MovieActionFunc (Movie movie);
+
+       public string name;
+       private MovieActionFunc action;
+       private Movie movie;
+
+       public MovieAction (string _name, MovieActionFunc _action, Movie _movie) {
+               name = _name;
+               action = _action;
+               movie = _movie;
+       }
+
+       public void execute () {
+               action (movie);
+       }
+}
index 3ef966c..6e897a4 100644 (file)
@@ -38,6 +38,12 @@ class GooglePlugin : Plugin {
                return sources;
        }
 
+       public override List<MovieAction> get_actions (Movie movie) {
+               List<MovieAction> list = null;
+
+               return list;
+       }
+
        public override void settings_dialog (Gtk.Window window) {
                GoogleSource source = (GoogleSource) sources.data;
                var dialog = new Gtk.Dialog ();
index b2a5f05..008f001 100644 (file)
@@ -90,6 +90,12 @@ class IMDbPlugin : Plugin {
                return sources;
        }
 
+       public override List<MovieAction> get_actions (Movie movie) {
+               List<MovieAction> list = null;
+
+               return list;
+       }
+
        public override void settings_dialog (Gtk.Window window) {
                var dialog = new Gtk.Dialog ();
                dialog.set_transient_for (window);