diff --git a/hammond-gtk/resources/gtk/episode_widget.ui b/hammond-gtk/resources/gtk/episode_widget.ui index f6ab3b7..3660ebb 100644 --- a/hammond-gtk/resources/gtk/episode_widget.ui +++ b/hammond-gtk/resources/gtk/episode_widget.ui @@ -196,6 +196,7 @@ True end center + app.refresh_episodes True @@ -218,6 +219,7 @@ True True center + app.refresh_episodes True diff --git a/hammond-gtk/src/app.rs b/hammond-gtk/src/app.rs index 01242e7..200a016 100644 --- a/hammond-gtk/src/app.rs +++ b/hammond-gtk/src/app.rs @@ -73,10 +73,26 @@ impl App { let refresh = gio::SimpleAction::new("refresh", None); let content = self.content.clone(); - update.connect_activate(move |_, _| { + refresh.connect_activate(move |_, _| { content.update(); }); self.app_instance.add_action(&refresh); + + let refresh_episodes = gio::SimpleAction::new("refresh_episodes", None); + let content = self.content.clone(); + refresh_episodes.connect_activate(move |_, _| { + if content.get_stack().get_visible_child_name() != Some(String::from("episodes")) { + content.update_episode_view(); + } + }); + self.app_instance.add_action(&refresh_episodes); + + let refresh_shows = gio::SimpleAction::new("refresh_shows", None); + let content = self.content.clone(); + refresh_shows.connect_activate(move |_, _| { + content.update_shows_view(); + }); + self.app_instance.add_action(&refresh_shows); } pub fn setup_timed_callbacks(&self) { diff --git a/hammond-gtk/src/content.rs b/hammond-gtk/src/content.rs index 630e7e2..73e2234 100644 --- a/hammond-gtk/src/content.rs +++ b/hammond-gtk/src/content.rs @@ -37,10 +37,18 @@ impl Content { } pub fn update(&self) { - self.shows.update(); + self.update_shows_view(); + self.update_episode_view(); + } + + pub fn update_episode_view(&self) { self.episodes.update(); } + pub fn update_shows_view(&self) { + self.shows.update(); + } + pub fn get_stack(&self) -> gtk::Stack { self.stack.clone() }