InAppNotif: Switch the timer to milliseconds

This allows for more responsive updates. The implementation still
sucks though. Ideally we would pass a receiver in the callback
and have an even lower timeout_add.
This commit is contained in:
Jordan Petridis 2018-08-14 07:58:29 +03:00
parent b2d71a037c
commit ae7f65e938
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6
3 changed files with 7 additions and 6 deletions

View File

@ -312,7 +312,7 @@ impl App {
glib::Continue(false) glib::Continue(false)
}; };
let undo_cb: Option<fn()> = None; let undo_cb: Option<fn()> = None;
let notif = InAppNotification::new(&err, 6, callback, undo_cb); let notif = InAppNotification::new(&err, 6000, callback, undo_cb);
notif.show(&self.overlay); notif.show(&self.overlay);
} }
Action::ShowUpdateNotif(receiver) => { Action::ShowUpdateNotif(receiver) => {
@ -328,7 +328,7 @@ impl App {
}; };
let txt = i18n("Fetching new episodes"); let txt = i18n("Fetching new episodes");
let undo_cb: Option<fn()> = None; let undo_cb: Option<fn()> = None;
let updater = InAppNotification::new(&txt, 1, callback, undo_cb); let updater = InAppNotification::new(&txt, 250, callback, undo_cb);
updater.set_close_state(State::Hidden); updater.set_close_state(State::Hidden);
updater.set_spinner_state(SpinnerState::Active); updater.set_spinner_state(SpinnerState::Active);

View File

@ -48,6 +48,7 @@ impl Default for InAppNotification {
} }
} }
/// Timer should be in milliseconds
impl InAppNotification { impl InAppNotification {
pub(crate) fn new<F, U>( pub(crate) fn new<F, U>(
text: &str, text: &str,
@ -64,9 +65,9 @@ impl InAppNotification {
let revealer_weak = notif.revealer.downgrade(); let revealer_weak = notif.revealer.downgrade();
let mut time = 0; let mut time = 0;
let id = timeout_add_seconds(1, move || { let id = timeout_add(250, move || {
if time < timer { if time < timer {
time += 1; time += 250;
return glib::Continue(true); return glib::Continue(true);
}; };

View File

@ -148,7 +148,7 @@ pub(crate) fn mark_all_notif(pd: Arc<Show>, sender: &Sender<Action>) -> InAppNot
let undo_callback = clone!(sender => move || sender.send(Action::RefreshWidgetIfSame(id))); let undo_callback = clone!(sender => move || sender.send(Action::RefreshWidgetIfSame(id)));
let text = i18n("Marked all episodes as listened"); let text = i18n("Marked all episodes as listened");
InAppNotification::new(&text, 6, callback, Some(undo_callback)) InAppNotification::new(&text, 6000, callback, Some(undo_callback))
} }
pub(crate) fn remove_show_notif(pd: Arc<Show>, sender: Sender<Action>) -> InAppNotification { pub(crate) fn remove_show_notif(pd: Arc<Show>, sender: Sender<Action>) -> InAppNotification {
@ -184,5 +184,5 @@ pub(crate) fn remove_show_notif(pd: Arc<Show>, sender: Sender<Action>) -> InAppN
sender.send(Action::RefreshEpisodesView); sender.send(Action::RefreshEpisodesView);
}; };
InAppNotification::new(&text, 6, callback, Some(undo_callback)) InAppNotification::new(&text, 6000, callback, Some(undo_callback))
} }