From 01f65376d01f73943962d1c6fe86a9c15302c8f5 Mon Sep 17 00:00:00 2001 From: doryan Date: Sat, 27 Jul 2024 23:28:35 +0400 Subject: [PATCH] feat(infobar): add a timer after which the infobar will be closed --- src/view/pages/signal_reducing.rs | 33 +++++++++++-------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/src/view/pages/signal_reducing.rs b/src/view/pages/signal_reducing.rs index ab00a2b..0a6dd3b 100644 --- a/src/view/pages/signal_reducing.rs +++ b/src/view/pages/signal_reducing.rs @@ -1,7 +1,5 @@ -use glib::property::PropertyGet; use gtk4 as gtk; -use gtk4::prelude::WidgetExt; -use std::{str::FromStr, time::Duration}; +use std::{str::FromStr, sync::Arc, time::Duration}; use crate::{ event_handlers::button_event_handlers::BtnEventHandler, @@ -68,10 +66,7 @@ pub fn signal_reducing_page(wrapper: &Box) { let calculate_button = Button::builder().label("Расчитать").build(); - // TODO: Make asynchronious auto-hide info bar. - let test = InfoBar::get_instance(); - - // let (tx, rx) = std::sync::mpsc::channel::(); + let info_bar: Arc = Arc::new(InfoBar::get_instance()); EventHandler::new(calculate_button.clone(), move |_| { let mut values: [f64; 6] = [0f64; 6]; @@ -91,23 +86,19 @@ pub fn signal_reducing_page(wrapper: &Box) { if let Ok(value) = try_extract_value { values[i] = value; } else { - test.set_text_label(Some("Вы ввели некорректное значение поля.")); - test.set_reveal_child(true); - // TODO: Make asynchronious auto-hide info bar. - // let transmitter = tx.clone(); - // - // gio::spawn_blocking(move || { - // std::thread::sleep(Duration::from_secs(5)); - // transmitter.send(false).unwrap(); - // }); - // - // test.set_reveal_child(rx.recv().unwrap()); + info_bar.set_text_label(Some("Вы ввели некорректное значение поля.")); + info_bar.set_reveal_child(true); - println!("Вы ввели некорректное значение поля."); - return; + let info_bar_reference = info_bar.clone(); + + gio::spawn_blocking(move || { + std::thread::sleep(Duration::from_secs(5)); + info_bar_reference.set_reveal_child(false); + }); + + break; } } - println!("{:?}", values); }) .on_click();