Movie list menu: add export button, use AntMovieCatalog importer / exporter
authorPhilipp Zabel <philipp.zabel@gmail.com>
Thu, 5 Aug 2010 16:25:04 +0000 (18:25 +0200)
committerPhilipp Zabel <philipp.zabel@gmail.com>
Fri, 6 Aug 2010 16:38:59 +0000 (18:38 +0200)
src/movie-list-menu.vala

index 31de2d7..b88f973 100644 (file)
@@ -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<Movie> ();
+               // 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) {