1 /* This file is part of Cinaest.
3 * Copyright (C) 2009 Philipp Zabel
5 * Cinaest is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * Cinaest is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with Cinaest. If not, see <http://www.gnu.org/licenses/>.
22 public class MovieListMenu : AppMenu {
23 public TreeSortable sortable;
24 private MovieListWindow movie_list_window;
25 private Hildon.Button select_source;
26 private Gtk.Button delete_movies;
28 public MovieListMenu (MovieListWindow window) {
29 movie_list_window = window;
33 // Add sort buttons as view menu filters
34 var sort_by_title = new RadioButton.with_label (null, _("ABC"));
35 var sort_by_year = new RadioButton.with_label_from_widget (sort_by_title, _("Year"));
36 var sort_by_rating = new RadioButton.with_label_from_widget (sort_by_title, _("Rating"));
38 // Draw them as toggle buttons, not as radio buttons
39 sort_by_title.set_mode (false);
40 sort_by_year.set_mode (false);
41 sort_by_rating.set_mode (false);
43 // TODO - get this from GConf
44 sort_by_title.set_active (true);
47 sort_by_title.toggled.connect (button => {
48 if (button.get_active ())
49 sortable.set_sort_column_id (MovieListStore.Columns.TITLE, Gtk.SortType.ASCENDING);
51 sort_by_year.toggled.connect (button => {
52 if (button.get_active ())
53 sortable.set_sort_column_id (MovieListStore.Columns.YEAR, Gtk.SortType.DESCENDING);
55 sort_by_rating.toggled.connect (button => {
56 if (button.get_active ())
57 sortable.set_sort_column_id (MovieListStore.Columns.RATING, Gtk.SortType.DESCENDING);
60 add_filter (sort_by_title);
61 add_filter (sort_by_year);
62 add_filter (sort_by_rating);
64 // Add view menu buttons
65 select_source = new Hildon.Button.with_text (SizeType.FINGER_HEIGHT, ButtonArrangement.VERTICAL, _("Source"), _("None"));
66 delete_movies = new Gtk.Button.with_label (_("Delete movies"));
67 var settings = new Gtk.Button.with_label (_("Settings"));
69 select_source.set_style (ButtonStyle.PICKER);
72 select_source.clicked.connect (on_select_source_clicked);
73 delete_movies.clicked.connect (() => { movie_list_window.on_delete_movies_clicked (); });
74 settings.clicked.connect (on_settings_clicked);
76 append (select_source);
77 append (delete_movies);
83 public MovieSource source {
85 select_source.value = value.get_name ();
86 if (value.get_editable ()) {
87 delete_movies.show ();
89 delete_movies.hide ();
94 public void on_select_source_clicked (Gtk.Button button) {
95 Hildon.Button select_source = (Hildon.Button) button;
96 var dialog = new SourceDialog (movie_list_window);
98 var source = movie_list_window.source;
99 dialog.run (ref source);
100 movie_list_window.source = source;
102 select_source.value = source.get_name ();
105 public void on_settings_clicked (Gtk.Button button) {
106 var dialog = new SettingsDialog (movie_list_window);