/* This file is part of Cinaest. * * Copyright (C) 2009 Philipp Zabel * * Cinaest is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Cinaest is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Cinaest. If not, see . */ using Gtk; using Hildon; public class SourceListWindow : StackableWindow { private SourceListView source_list; private bool start_movies; private string default_source; private MovieListWindow list_window; private Alignment alignment; construct { set_title ("Cinæst"); // View menu var menu = new SourceListMenu (this); set_main_menu (menu); var sources = new List (); source_list = new SourceListView (sources, true, this); alignment = new Alignment (0.0f, 0.0f, 1.0f, 1.0f); alignment.top_padding = MARGIN_HALF; alignment.left_padding = MARGIN_DOUBLE; alignment.right_padding = MARGIN_DOUBLE; alignment.add (source_list); add (alignment); source_list.source_activated.connect (on_source_activated); var gc = GConf.Client.get_default (); try { start_movies = gc.get_bool ("/apps/cinaest/start_movies"); default_source = gc.get_string ("/apps/cinaest/default_source"); } catch (Error e) { stdout.printf ("Error getting GConf option: %s\n", e.message); } show_all (); } public void add_sources (List list) { source_list.add_sources (list); if (source_list.length () > 6) alignment.right_padding = MARGIN_DEFAULT; else alignment.right_padding = MARGIN_DOUBLE; if (start_movies) { foreach (MovieSource source in list) { if (default_source == source.get_name ()) { var window = new MovieListWindow (source); window.show (); break; } } } } private void on_source_activated (MovieSource source) { if (list_window != null) return; list_window = new MovieListWindow (source); list_window.show (); list_window.destroy.connect (() => { list_window = null; }); } }