diff --git a/hammond-gtk/resources/gtk/show_widget.ui b/hammond-gtk/resources/gtk/show_widget.ui
index fca068c..4e71bf5 100644
--- a/hammond-gtk/resources/gtk/show_widget.ui
+++ b/hammond-gtk/resources/gtk/show_widget.ui
@@ -266,4 +266,29 @@ Tobias Bernard
+
diff --git a/hammond-gtk/src/widgets/show.rs b/hammond-gtk/src/widgets/show.rs
index 0a5808d..2805907 100644
--- a/hammond-gtk/src/widgets/show.rs
+++ b/hammond-gtk/src/widgets/show.rs
@@ -62,6 +62,8 @@ impl ShowWidget {
}
pub fn init(&self, pd: Arc, sender: Sender) {
+ let builder = gtk::Builder::new_from_resource("/org/gnome/hammond/gtk/show_widget.ui");
+
// Hacky workaround so the pd.id() can be retrieved from the `ShowStack`.
WidgetExt::set_name(&self.container, &pd.id().to_string());
@@ -88,6 +90,16 @@ impl ShowWidget {
error!("Error: {}", err);
}
});
+
+ let show_menu: gtk::Popover = builder.get_object("show_menu").unwrap();
+ let mark_all: gtk::ModelButton = builder.get_object("mark_all_watched").unwrap();
+
+ mark_all.connect_clicked(clone!(pd, sender => move |_| {
+ if let Err(err) = on_played_button_clicked(&pd, sender.clone()) {
+ error!("Failed to mark all episodes as watched: {}", err);
+ }
+ }));
+ self.settings.set_popover(&show_menu);
}
/// Populate the listbox with the shows episodes.
@@ -142,7 +154,6 @@ fn on_unsub_button_clicked(
Ok(())
}
-#[allow(dead_code)]
fn on_played_button_clicked(pd: &Podcast, sender: Sender) -> Result<(), Error> {
dbqueries::update_none_to_played_now(pd)?;
sender.send(Action::RefreshWidget)?;