From: Philipp Zabel Date: Thu, 5 Aug 2010 16:25:04 +0000 (+0200) Subject: Movie list menu: add export button, use AntMovieCatalog importer / exporter X-Git-Url: http://vcs.maemo.org/git/?p=cinaest;a=commitdiff_plain;h=e5203eb2b397ed00c2ce0dd914e7593cff3b2618 Movie list menu: add export button, use AntMovieCatalog importer / exporter --- diff --git a/src/movie-list-menu.vala b/src/movie-list-menu.vala index 31de2d7..b88f973 100644 --- a/src/movie-list-menu.vala +++ b/src/movie-list-menu.vala @@ -29,6 +29,7 @@ public class MovieListMenu : AppMenu { private Gtk.Button poster_view; private Gtk.Button delete_movies; private Gtk.Button import_movies; + private Gtk.Button export_movies; public signal void filter_changed (); @@ -75,6 +76,7 @@ public class MovieListMenu : AppMenu { poster_view = new Gtk.Button.with_label (_("Poster view")); delete_movies = new Gtk.Button.with_label (_("Delete movies")); import_movies = new Gtk.Button.with_label (_("Import movies")); + export_movies = new Gtk.Button.with_label (_("Export movies")); var settings = new Gtk.Button.with_label (_("Settings")); filter_year.set_style (ButtonStyle.PICKER); @@ -88,6 +90,7 @@ public class MovieListMenu : AppMenu { poster_view.clicked.connect (on_poster_view_clicked); delete_movies.clicked.connect (() => { movie_list_window.on_delete_movies_clicked (); }); import_movies.clicked.connect (on_import_movies_clicked); + export_movies.clicked.connect (on_export_movies_clicked); settings.clicked.connect (on_settings_clicked); append (filter_year); @@ -95,6 +98,7 @@ public class MovieListMenu : AppMenu { append (filter_genres); append (poster_view); append (import_movies); + append (export_movies); append (delete_movies); append (settings); @@ -108,9 +112,11 @@ public class MovieListMenu : AppMenu { if (source_ != null && SourceFlags.EDITABLE in source_.get_flags ()) { delete_movies.show (); import_movies.show (); + export_movies.show (); } else { delete_movies.hide (); import_movies.hide (); + export_movies.show (); } } } @@ -216,6 +222,7 @@ public class MovieListMenu : AppMenu { } Hildon.FileChooserDialog file_chooser; + int imported_movies = 0; public void on_import_movies_clicked (Gtk.Button button) { file_chooser = new Hildon.FileChooserDialog (movie_list_window, FileChooserAction.OPEN); file_chooser.set_title (_("Select file to import movies from")); @@ -231,17 +238,48 @@ public class MovieListMenu : AppMenu { print ("FILE: %s\n", file_chooser.get_filename ()); } -/* - // import movies or ratings from some source - for (var Plugin in CinaestProgram.plugins) { - if (plugin.can_export_ratings ()) { - exporters++; - } + var importer = new AMCImporter (); + importer.movie_available.connect (on_movie_available); + importer.parse_file (file_chooser.get_filename ()); + + file_chooser.destroy (); + file_chooser = null; + + Banner.show_information (movie_list_window, null, _("%d movies imported").printf (imported_movies)); + imported_movies = 0; + } + + private void on_movie_available (Movie movie) { + // if filter.matches (movie) + source_.add_movie (movie); + TreeIter iter; + store.add (movie, out iter); + imported_movies++; + } + + public void on_export_movies_clicked (Gtk.Button button) { + file_chooser = new Hildon.FileChooserDialog (movie_list_window, FileChooserAction.SAVE); + file_chooser.set_title (_("Select file to export movies to")); + + var filter = new Gtk.FileFilter (); + filter.add_pattern ("*.xml"); + file_chooser.set_filter (filter); + + file_chooser.set_current_folder ("/home/user/MyDocs/.documents"); + + var res = file_chooser.run (); + if (res == ResponseType.OK) { + print ("FILE: %s\n", file_chooser.get_filename ()); } - if (exporters > 1) - exporter = run_exporter_selection_dialog -*/ + + var movies = new List (); + // TODO: append from store + + var exporter = new AMCExporter (); + exporter.write_file (file_chooser.get_filename (), movies); + file_chooser.destroy (); + file_chooser = null; } public void on_settings_clicked (Gtk.Button button) {