diff --git a/hammond-gtk/src/content.rs b/hammond-gtk/src/content.rs index c869741..49ed951 100644 --- a/hammond-gtk/src/content.rs +++ b/hammond-gtk/src/content.rs @@ -173,15 +173,17 @@ impl EpisodeStack { } fn update(&self) { - // FIXME: figure out if it should switch to empty view - let vis = self.stack.get_visible_child_name().unwrap(); let old = self.stack.get_child_by_name("episodes").unwrap(); - let eps = EpisodesView::new(); self.stack.remove(&old); self.stack.add_named(&eps.container, "episodes"); - self.stack.set_visible_child_name(&vis); + + if eps.is_empty() { + self.stack.set_visible_child_name("empty"); + } else { + self.stack.set_visible_child_name("episodes"); + } old.destroy(); } diff --git a/hammond-gtk/src/views/episodes.rs b/hammond-gtk/src/views/episodes.rs index 51ce199..bb7a44d 100644 --- a/hammond-gtk/src/views/episodes.rs +++ b/hammond-gtk/src/views/episodes.rs @@ -163,6 +163,34 @@ impl EpisodesView { view.container.show_all(); Rc::new(view) } + + pub fn is_empty(&self) -> bool { + if !self.today_list.get_children().is_empty() { + return false; + } + + if !self.yday_list.get_children().is_empty() { + return false; + } + + if !self.week_list.get_children().is_empty() { + return false; + } + + if !self.month_list.get_children().is_empty() { + return false; + } + + if !self.year_list.get_children().is_empty() { + return false; + } + + if !self.rest_list.get_children().is_empty() { + return false; + } + + true + } } // TODO: Avoid epoch calculations, use chrono instead.