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();