X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fmovie-list-menu.vala;h=b88f9732d49360478b1c0f6348c6d129316aa492;hb=e5203eb2b397ed00c2ce0dd914e7593cff3b2618;hp=32152bc75d50ccf6fed50d02315fa96f5a3be0ef;hpb=4934fc99ef62b88bf7d4fbd4cc7042d409672206;p=cinaest diff --git a/src/movie-list-menu.vala b/src/movie-list-menu.vala index 32152bc..b88f973 100644 --- a/src/movie-list-menu.vala +++ b/src/movie-list-menu.vala @@ -20,13 +20,16 @@ using Gtk; using Hildon; public class MovieListMenu : AppMenu { - public TreeSortable sortable; + public MovieListStore store; public MovieFilter filter; - private MovieListWindow movie_list_window; + private weak MovieListWindow movie_list_window; private Hildon.Button filter_year; private Hildon.Button filter_rating; private Hildon.Button filter_genres; + 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 (); @@ -51,15 +54,15 @@ public class MovieListMenu : AppMenu { // Connect signals sort_by_title.toggled.connect (button => { if (button.get_active ()) - sortable.set_sort_column_id (MovieListStore.Columns.TITLE, Gtk.SortType.ASCENDING); + store.set_sort_column_id (MovieListStore.Columns.TITLE, Gtk.SortType.ASCENDING); }); sort_by_year.toggled.connect (button => { if (button.get_active ()) - sortable.set_sort_column_id (MovieListStore.Columns.YEAR, Gtk.SortType.DESCENDING); + store.set_sort_column_id (MovieListStore.Columns.YEAR, Gtk.SortType.DESCENDING); }); sort_by_rating.toggled.connect (button => { if (button.get_active ()) - sortable.set_sort_column_id (MovieListStore.Columns.RATING, Gtk.SortType.DESCENDING); + store.set_sort_column_id (MovieListStore.Columns.RATING, Gtk.SortType.DESCENDING); }); add_filter (sort_by_title); @@ -70,7 +73,10 @@ public class MovieListMenu : AppMenu { filter_year = new Hildon.Button.with_text (SizeType.FINGER_HEIGHT, ButtonArrangement.VERTICAL, _("Filter by year"), _("Off")); filter_rating = new Hildon.Button.with_text (SizeType.FINGER_HEIGHT, ButtonArrangement.VERTICAL, _("Filter by rating"), _("Off")); filter_genres = new Hildon.Button.with_text (SizeType.FINGER_HEIGHT, ButtonArrangement.VERTICAL, _("Filter by genres"), _("Off")); + 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); @@ -81,24 +87,36 @@ public class MovieListMenu : AppMenu { filter_year.clicked.connect (on_filter_year_clicked); filter_rating.clicked.connect (on_filter_rating_clicked); filter_genres.clicked.connect (on_filter_genres_clicked); + 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); append (filter_rating); append (filter_genres); + append (poster_view); + append (import_movies); + append (export_movies); append (delete_movies); append (settings); show_all (); } + private MovieSource source_; public MovieSource source { set { - if (value.get_editable ()) { + source_ = value; + 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 (); } } } @@ -145,6 +163,8 @@ public class MovieListMenu : AppMenu { filter_year.set_value (_("Until %d").printf (filter.year_max)); else if (filter.year_max == 0) filter_year.set_value (_("Since %d").printf (filter.year_min)); + else if (filter.year_min == filter.year_max) + filter_year.set_value ("%d".printf (filter.year_min)); else filter_year.set_value ("%d - %d".printf (filter.year_min, filter.year_max)); @@ -195,6 +215,73 @@ public class MovieListMenu : AppMenu { } } + public void on_poster_view_clicked (Gtk.Button button) { + var poster_mode = movie_list_window.get_movie_list_view ().poster_mode; + movie_list_window.get_movie_list_view ().poster_mode = !poster_mode; + poster_view.set_label (poster_mode ? _("Poster view") : _("List view")); + } + + 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")); + + 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 ()); + } + + 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 ()); + } + + 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) { var dialog = new SettingsDialog (movie_list_window);