h-gtk: Nuke Action::UpdateSource.
Use inline glib::idle_add since it can be called on the spot.
This commit is contained in:
parent
bc6eeec663
commit
a9abd75b51
@ -10,7 +10,7 @@ use failure::Error;
|
|||||||
use rayon;
|
use rayon;
|
||||||
|
|
||||||
use hammond_data::utils::delete_show;
|
use hammond_data::utils::delete_show;
|
||||||
use hammond_data::{Podcast, Source};
|
use hammond_data::Podcast;
|
||||||
|
|
||||||
use appnotif::*;
|
use appnotif::*;
|
||||||
use headerbar::Header;
|
use headerbar::Header;
|
||||||
@ -25,7 +25,6 @@ use std::time::Duration;
|
|||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub enum Action {
|
pub enum Action {
|
||||||
UpdateSources(Option<Source>),
|
|
||||||
RefreshAllViews,
|
RefreshAllViews,
|
||||||
RefreshEpisodesView,
|
RefreshEpisodesView,
|
||||||
RefreshEpisodesViewBGR,
|
RefreshEpisodesViewBGR,
|
||||||
@ -170,14 +169,6 @@ impl App {
|
|||||||
let receiver = self.receiver;
|
let receiver = self.receiver;
|
||||||
gtk::idle_add(move || {
|
gtk::idle_add(move || {
|
||||||
match receiver.recv_timeout(Duration::from_millis(10)) {
|
match receiver.recv_timeout(Duration::from_millis(10)) {
|
||||||
Ok(Action::UpdateSources(source)) => {
|
|
||||||
if let Some(s) = source {
|
|
||||||
utils::refresh(Some(vec![s]), sender.clone());
|
|
||||||
} else {
|
|
||||||
let s: Option<Vec<_>> = None;
|
|
||||||
utils::refresh(s, sender.clone());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Ok(Action::RefreshAllViews) => content.update(),
|
Ok(Action::RefreshAllViews) => content.update(),
|
||||||
Ok(Action::RefreshShowsView) => content.update_shows_view(),
|
Ok(Action::RefreshShowsView) => content.update_shows_view(),
|
||||||
Ok(Action::RefreshWidget) => content.update_widget(),
|
Ok(Action::RefreshWidget) => content.update_widget(),
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
use glib;
|
||||||
use gtk;
|
use gtk;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
|
|
||||||
@ -12,7 +13,7 @@ use std::sync::mpsc::Sender;
|
|||||||
|
|
||||||
use app::Action;
|
use app::Action;
|
||||||
use stacks::Content;
|
use stacks::Content;
|
||||||
use utils::itunes_to_rss;
|
use utils::{itunes_to_rss, refresh};
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct Header {
|
pub struct Header {
|
||||||
@ -92,10 +93,11 @@ impl Header {
|
|||||||
|
|
||||||
self.update_button
|
self.update_button
|
||||||
.connect_clicked(clone!(sender => move |_| {
|
.connect_clicked(clone!(sender => move |_| {
|
||||||
sender
|
glib::idle_add(clone!(sender => move || {
|
||||||
.send(Action::UpdateSources(None))
|
let s: Option<Vec<_>> = None;
|
||||||
.map_err(|err| error!("Action Sender: {}", err))
|
refresh(s, sender.clone());
|
||||||
.ok();
|
glib::Continue(false)
|
||||||
|
}));
|
||||||
}));
|
}));
|
||||||
|
|
||||||
self.about_button
|
self.about_button
|
||||||
@ -171,9 +173,10 @@ fn on_add_bttn_clicked(entry: >k::Entry, sender: Sender<Action>) -> Result<(),
|
|||||||
let source = Source::from_url(&url).context("Failed to convert url to a Source entry.")?;
|
let source = Source::from_url(&url).context("Failed to convert url to a Source entry.")?;
|
||||||
entry.set_text("");
|
entry.set_text("");
|
||||||
|
|
||||||
sender
|
glib::idle_add(move || {
|
||||||
.send(Action::UpdateSources(Some(source)))
|
refresh(Some(vec![source.clone()]), sender.clone());
|
||||||
.context("App channel blew up.")?;
|
glib::Continue(false)
|
||||||
|
});
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user