38605279f1ba0ad3dba8f3a91ee5a7811e20ba7b
[cinaest] / src / movie-menu.vala
1 /* This file is part of Cinaest.
2  *
3  * Copyright (C) 2009 Philipp Zabel
4  *
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.
9  *
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.
14  *
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/>.
17  */
18
19 using Hildon;
20 using Osso;
21
22 public class MovieMenu : AppMenu {
23         private Movie movie;
24         private MovieListStore store;
25         private Gtk.Window parent_window;
26         private List<MovieAction> actions;
27
28         public signal void movie_deleted ();
29
30         public MovieMenu (Movie _movie, MovieListStore _store, Gtk.Window window) {
31                 movie = _movie;
32                 store = _store;
33                 parent_window = window;
34                 foreach (Plugin plugin in CinaestProgram.plugins) {
35                         foreach (MovieAction action in plugin.get_actions (movie, window)) {
36                                 var button = new Gtk.Button.with_label (action.name);
37                                 button.clicked.connect (action.execute);
38                                 append (button);
39                                 actions.append (action);
40                         }
41                 }
42                 if (store.get_editable ()) {
43                         var button = new Gtk.Button.with_label (_("Delete movie"));
44                         button.clicked.connect (on_delete_movie);
45                         append (button);
46                 }
47
48                 show_all ();
49         }
50
51         private void on_delete_movie () {
52                 var dialog = new Note.confirmation (parent_window, _("Delete movie '%s'?").printf (movie.title));
53                 var res = dialog.run ();
54
55                 dialog.destroy ();
56                 if (res == Gtk.ResponseType.OK) {
57                         store.remove (movie);
58                         movie_deleted ();
59                 }
60         }
61 }
62