Headerbar: Use application action channel instead of GAction.

This commit is contained in:
Jordan Petridis 2018-01-12 01:41:36 +02:00
parent 88a4c2d9f0
commit e192cf6618
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6
3 changed files with 11 additions and 15 deletions

View File

@ -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>

View File

@ -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(),

View File

@ -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;