Headerbar: Use application action channel instead of GAction.
This commit is contained in:
parent
88a4c2d9f0
commit
e192cf6618
@ -307,11 +307,10 @@ Tobias Bernard
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkModelButton" id="refresh_button">
|
||||
<object class="GtkModelButton" id="update_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="action_name">app.update</property>
|
||||
<property name="text" translatable="yes">Check for new episodes</property>
|
||||
</object>
|
||||
<packing>
|
||||
|
||||
@ -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(),
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user