diff --git a/hammond-gtk/resources/gtk/headerbar.ui b/hammond-gtk/resources/gtk/headerbar.ui index 00fa466..e728022 100644 --- a/hammond-gtk/resources/gtk/headerbar.ui +++ b/hammond-gtk/resources/gtk/headerbar.ui @@ -307,11 +307,10 @@ Tobias Bernard - + True True True - app.update Check for new episodes diff --git a/hammond-gtk/src/app.rs b/hammond-gtk/src/app.rs index 1c214b2..bc9890d 100644 --- a/hammond-gtk/src/app.rs +++ b/hammond-gtk/src/app.rs @@ -2,7 +2,7 @@ use gtk; use glib; use gio; use gtk::prelude::*; -use gio::{ActionMapExt, ApplicationExt, ApplicationExtManual, SimpleActionExt}; +use gio::{ApplicationExt, ApplicationExtManual}; use hammond_data::utils::checkup; use hammond_data::{Podcast, Source}; @@ -86,17 +86,6 @@ impl App { } } - pub fn setup_actions(&self) { - // Updates the database and refreshes every view. - let update = gio::SimpleAction::new("update", None); - let header = self.header.clone(); - let sender = self.sender.clone(); - update.connect_activate(move |_, _| { - utils::refresh_feed(header.clone(), None, sender.clone()); - }); - self.app_instance.add_action(&update); - } - pub fn setup_timed_callbacks(&self) { let header = self.header.clone(); let sender = self.sender.clone(); @@ -130,7 +119,6 @@ impl App { build_ui(&window, &app); }); self.setup_timed_callbacks(); - self.setup_actions(); let content = self.content.clone(); let headerbar = self.header.clone(); @@ -141,6 +129,8 @@ impl App { Ok(Action::UpdateSources(source)) => { if let Some(s) = source { utils::refresh_feed(headerbar.clone(), Some(vec![s]), sender.clone()) + } else { + utils::refresh_feed(headerbar.clone(), None, sender.clone()) } } Ok(Action::RefreshAllViews) => content.update(), diff --git a/hammond-gtk/src/headerbar.rs b/hammond-gtk/src/headerbar.rs index 7c251fb..82839a7 100644 --- a/hammond-gtk/src/headerbar.rs +++ b/hammond-gtk/src/headerbar.rs @@ -16,6 +16,7 @@ pub struct Header { switch: gtk::StackSwitcher, back_button: gtk::Button, show_title: gtk::Label, + update_button: gtk::ModelButton, update_box: gtk::Box, update_label: gtk::Label, update_spinner: gtk::Spinner, @@ -30,6 +31,7 @@ impl Default for Header { let switch: gtk::StackSwitcher = builder.get_object("switch").unwrap(); let back_button: gtk::Button = builder.get_object("back_button").unwrap(); let show_title: gtk::Label = builder.get_object("show_title").unwrap(); + let update_button: gtk::ModelButton = builder.get_object("update_button").unwrap(); let update_box: gtk::Box = builder.get_object("update_notification").unwrap(); let update_label: gtk::Label = builder.get_object("update_label").unwrap(); let update_spinner: gtk::Spinner = builder.get_object("update_spinner").unwrap(); @@ -40,6 +42,7 @@ impl Default for Header { switch, back_button, show_title, + update_button, update_box, update_label, update_spinner, @@ -74,6 +77,10 @@ impl Header { self.add_toggle.set_popover(&add_popover); + self.update_button.connect_clicked(move |_| { + sender.send(Action::UpdateSources(None)).unwrap(); + }); + let switch = &self.switch; let add_toggle = &self.add_toggle; let show_title = &self.show_title;