/* 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; });
}
}