private MovieListStore store;
private Label no_movies;
private bool search_bar_visible;
+ private MovieWindow movie_window;
+ private Alignment alignment;
+
+ public MovieListWindow (MovieSource source) {
+ set_title (source.get_description ());
- construct {
// View menu
menu = new MovieListMenu (this);
+ menu.source = source;
set_main_menu (menu);
search_field_item.set_expand (true);
search_field_item.add (search_field);
- var close_image = new Image.from_file("/usr/share/icons/hicolor/48x48/hildon/general_close.png");
+ var icon_theme = Gtk.IconTheme.get_default ();
+ var pixbuf = icon_theme.load_icon ("general_close",
+ 48,
+ Gtk.IconLookupFlags.NO_SVG);
+ var close_image = new Image.from_pixbuf (pixbuf);
var close_button = new ToolButton (close_image, _("Close"));
search_bar = new Toolbar ();
movie_list = new MovieListView ();
menu.sortable = movie_list.sorted_store;
store = movie_list.store;
+ store.source = source;
no_movies = new Label (_("No movies"));
Hildon.helper_set_logical_font (no_movies, "LargeSystemFont");
vbox.pack_start (movie_list, true, true, 0);
vbox.pack_start (no_movies, false, false, 0);
- add (vbox);
+ 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 (vbox);
+ add (alignment);
edit_toolbar = new Hildon.EditToolbar.with_text (_("Select movies"), _("Delete"));
set_edit_toolbar (edit_toolbar);
// Connect signals
+ menu.filter_changed.connect (() => { start_search (); });
edit_toolbar.button_clicked.connect (on_delete_button_clicked);
edit_toolbar.arrow_clicked.connect (leave_edit_mode);
search_field.changed.connect (on_search_field_changed);
close_button.clicked.connect (on_close_button_clicked);
key_press_event.connect (on_key_press_event);
movie_list.movie_activated.connect (on_movie_activated);
+ store.search_finished.connect (on_search_finished);
store.notify["update-running"].connect (on_update_running_changed);
edit_toolbar.hide ();
search_bar_visible = false;
search_bar.hide ();
- movie_list.hide ();
filter = new MovieFilter ();
- }
-
- public MovieSource source {
- get { return store.source; }
- set {
- store.source = value;
- menu.source = value;
- set_title (value.get_description ());
- filter.title = search_field.get_text ();
- if (store.start_search (filter)) {
- movie_list.show ();
- no_movies.hide ();
- }
+ menu.filter = filter;
+ filter.title = "";
+ if (store.start_search (filter)) {
+ no_movies.hide ();
+ } else {
+ movie_list.hide ();
}
}
return false;
}
+ private void on_search_finished (int movies) {
+ if (movies > 6)
+ alignment.right_padding = MARGIN_DEFAULT;
+ else
+ alignment.right_padding = MARGIN_DOUBLE;
+ if (movies > 100) {
+ Banner.show_information (this, null, _("More results available - refine search to reduce the dataset"));
+ }
+ }
+
private void on_movie_activated (Movie movie) {
- var window = new MovieWindow.with_movie (movie, store);
- window.show_all ();
+ if (movie_window != null)
+ return;
+ movie_window = new MovieWindow.with_movie (movie, store);
+ movie_window.destroy.connect (() => { movie_window = null; });
+ movie_window.show ();
}
private void on_update_running_changed (GLib.Object source, ParamSpec spec) {