From ba391586d7107db059edcdab431c46bf2b431f56 Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Tue, 17 Nov 2009 19:15:49 +0100 Subject: [PATCH] Plugin interface: add window to movie action In case the action has to display a transient dialog, banners or confirmations. --- src/movie-menu.vala | 2 +- src/plugin-interface.vala | 10 ++++++---- src/plugins/google-plugin.vala | 2 +- src/plugins/imdb-plugin.vala | 12 +++++------- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/movie-menu.vala b/src/movie-menu.vala index cd787ae..efeb28b 100644 --- a/src/movie-menu.vala +++ b/src/movie-menu.vala @@ -27,7 +27,7 @@ public class MovieMenu : AppMenu { movie = _movie; foreach (Plugin plugin in CinaestProgram.plugins) { - foreach (MovieAction action in plugin.get_actions (movie)) { + foreach (MovieAction action in plugin.get_actions (movie, window)) { var button = new Gtk.Button.with_label (action.name); button.clicked.connect (action.execute); append (button); diff --git a/src/plugin-interface.vala b/src/plugin-interface.vala index bdf1bbc..ea88cff 100644 --- a/src/plugin-interface.vala +++ b/src/plugin-interface.vala @@ -20,7 +20,7 @@ public abstract class Plugin : Object { public abstract void hello (Gtk.Window window, Osso.Context context); public abstract unowned List get_sources (); - public abstract List get_actions (Movie movie); + public abstract List get_actions (Movie movie, Gtk.Window window); public abstract void settings_dialog (Gtk.Window window); @@ -42,19 +42,21 @@ public abstract class MovieSource : Object { } public class MovieAction : Object { - public delegate void MovieActionFunc (Movie movie); + public delegate void MovieActionFunc (Movie movie, Gtk.Window window); public string name; private MovieActionFunc action; private Movie movie; + private Gtk.Window window; - public MovieAction (string _name, MovieActionFunc _action, Movie _movie) { + public MovieAction (string _name, MovieActionFunc _action, Movie _movie, Gtk.Window _window) { name = _name; action = _action; movie = _movie; + window = _window; } public void execute () { - action (movie); + action (movie, window); } } diff --git a/src/plugins/google-plugin.vala b/src/plugins/google-plugin.vala index 7f26ad1..18a9df3 100644 --- a/src/plugins/google-plugin.vala +++ b/src/plugins/google-plugin.vala @@ -38,7 +38,7 @@ class GooglePlugin : Plugin { return sources; } - public override List get_actions (Movie movie) { + public override List get_actions (Movie movie, Gtk.Window window) { List list = null; return list; diff --git a/src/plugins/imdb-plugin.vala b/src/plugins/imdb-plugin.vala index 85ece43..2d99c32 100644 --- a/src/plugins/imdb-plugin.vala +++ b/src/plugins/imdb-plugin.vala @@ -23,7 +23,6 @@ class IMDbPlugin : Plugin { private dynamic DBus.Object server; List sources; private weak Osso.Context osso_context; - private Gtk.Window _window; public override void hello (Gtk.Window window, Osso.Context context) { string filename = Path.build_filename (Environment.get_user_cache_dir(), @@ -47,7 +46,6 @@ class IMDbPlugin : Plugin { sources.append (source); osso_context = context; - _window = window; // FIXME - this forces the inclusion of config.h (void) Config.GETTEXT_PACKAGE; @@ -92,25 +90,25 @@ class IMDbPlugin : Plugin { return sources; } - public override List get_actions (Movie movie) { + public override List get_actions (Movie movie, Gtk.Window window) { List list = null; if (movie.year > 0) - list.append (new MovieAction (_("IMDb page"), on_visit_imdb, movie)); + list.append (new MovieAction (_("IMDb page"), on_visit_imdb, movie, window)); else - list.append (new MovieAction (_("Lookup on IMDb"), on_visit_imdb, movie)); + list.append (new MovieAction (_("Lookup on IMDb"), on_visit_imdb, movie, window)); return list; } - private void on_visit_imdb (Movie movie) { + private void on_visit_imdb (Movie movie, Gtk.Window window) { var url = "http://www.imdb.com/find?s=tt&q=" + movie.title.replace(" ", "+"); if (movie.year > 0) url += "+(%d)".printf (movie.year); var status = osso_context.rpc_run_with_defaults ("osso_browser", "open_new_window", null, 's', url, 'b', false); if (status != Osso.Status.OK) { - var banner = (Banner) Hildon.Banner.show_information_with_markup (_window, null, "Failed to open browser."); + var banner = (Banner) Hildon.Banner.show_information_with_markup (window, null, "Failed to open browser."); banner.set_timeout (1500); } } -- 1.7.9.5