Headerbar: Use application action channel instead of GAction.
This commit is contained in:
parent
88a4c2d9f0
commit
e192cf6618
@ -307,11 +307,10 @@ Tobias Bernard
|
|||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkModelButton" id="refresh_button">
|
<object class="GtkModelButton" id="update_button">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">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>
|
<property name="text" translatable="yes">Check for new episodes</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
|
|||||||
@ -2,7 +2,7 @@ use gtk;
|
|||||||
use glib;
|
use glib;
|
||||||
use gio;
|
use gio;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
use gio::{ActionMapExt, ApplicationExt, ApplicationExtManual, SimpleActionExt};
|
use gio::{ApplicationExt, ApplicationExtManual};
|
||||||
|
|
||||||
use hammond_data::utils::checkup;
|
use hammond_data::utils::checkup;
|
||||||
use hammond_data::{Podcast, Source};
|
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) {
|
pub fn setup_timed_callbacks(&self) {
|
||||||
let header = self.header.clone();
|
let header = self.header.clone();
|
||||||
let sender = self.sender.clone();
|
let sender = self.sender.clone();
|
||||||
@ -130,7 +119,6 @@ impl App {
|
|||||||
build_ui(&window, &app);
|
build_ui(&window, &app);
|
||||||
});
|
});
|
||||||
self.setup_timed_callbacks();
|
self.setup_timed_callbacks();
|
||||||
self.setup_actions();
|
|
||||||
|
|
||||||
let content = self.content.clone();
|
let content = self.content.clone();
|
||||||
let headerbar = self.header.clone();
|
let headerbar = self.header.clone();
|
||||||
@ -141,6 +129,8 @@ impl App {
|
|||||||
Ok(Action::UpdateSources(source)) => {
|
Ok(Action::UpdateSources(source)) => {
|
||||||
if let Some(s) = source {
|
if let Some(s) = source {
|
||||||
utils::refresh_feed(headerbar.clone(), Some(vec![s]), sender.clone())
|
utils::refresh_feed(headerbar.clone(), Some(vec![s]), sender.clone())
|
||||||
|
} else {
|
||||||
|
utils::refresh_feed(headerbar.clone(), None, sender.clone())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(Action::RefreshAllViews) => content.update(),
|
Ok(Action::RefreshAllViews) => content.update(),
|
||||||
|
|||||||
@ -16,6 +16,7 @@ pub struct Header {
|
|||||||
switch: gtk::StackSwitcher,
|
switch: gtk::StackSwitcher,
|
||||||
back_button: gtk::Button,
|
back_button: gtk::Button,
|
||||||
show_title: gtk::Label,
|
show_title: gtk::Label,
|
||||||
|
update_button: gtk::ModelButton,
|
||||||
update_box: gtk::Box,
|
update_box: gtk::Box,
|
||||||
update_label: gtk::Label,
|
update_label: gtk::Label,
|
||||||
update_spinner: gtk::Spinner,
|
update_spinner: gtk::Spinner,
|
||||||
@ -30,6 +31,7 @@ impl Default for Header {
|
|||||||
let switch: gtk::StackSwitcher = builder.get_object("switch").unwrap();
|
let switch: gtk::StackSwitcher = builder.get_object("switch").unwrap();
|
||||||
let back_button: gtk::Button = builder.get_object("back_button").unwrap();
|
let back_button: gtk::Button = builder.get_object("back_button").unwrap();
|
||||||
let show_title: gtk::Label = builder.get_object("show_title").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_box: gtk::Box = builder.get_object("update_notification").unwrap();
|
||||||
let update_label: gtk::Label = builder.get_object("update_label").unwrap();
|
let update_label: gtk::Label = builder.get_object("update_label").unwrap();
|
||||||
let update_spinner: gtk::Spinner = builder.get_object("update_spinner").unwrap();
|
let update_spinner: gtk::Spinner = builder.get_object("update_spinner").unwrap();
|
||||||
@ -40,6 +42,7 @@ impl Default for Header {
|
|||||||
switch,
|
switch,
|
||||||
back_button,
|
back_button,
|
||||||
show_title,
|
show_title,
|
||||||
|
update_button,
|
||||||
update_box,
|
update_box,
|
||||||
update_label,
|
update_label,
|
||||||
update_spinner,
|
update_spinner,
|
||||||
@ -74,6 +77,10 @@ impl Header {
|
|||||||
|
|
||||||
self.add_toggle.set_popover(&add_popover);
|
self.add_toggle.set_popover(&add_popover);
|
||||||
|
|
||||||
|
self.update_button.connect_clicked(move |_| {
|
||||||
|
sender.send(Action::UpdateSources(None)).unwrap();
|
||||||
|
});
|
||||||
|
|
||||||
let switch = &self.switch;
|
let switch = &self.switch;
|
||||||
let add_toggle = &self.add_toggle;
|
let add_toggle = &self.add_toggle;
|
||||||
let show_title = &self.show_title;
|
let show_title = &self.show_title;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user