From 2a88eeaf018904d09fe3bf03cb0a5436669cb72b Mon Sep 17 00:00:00 2001 From: doryan Date: Mon, 12 Aug 2024 12:13:55 +0400 Subject: [PATCH] fix(on click): ColumnView data update is complete --- src/view/pages/signal_reducing.rs | 42 +++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/src/view/pages/signal_reducing.rs b/src/view/pages/signal_reducing.rs index c7c9cd2..b504abf 100644 --- a/src/view/pages/signal_reducing.rs +++ b/src/view/pages/signal_reducing.rs @@ -178,20 +178,40 @@ pub fn signal_reducing_page(wrapper: &Box) { .vexpand(true) .build(); - calculate_button.connect_clicked(move |_| match parse_fields(all_inputs.clone()) { - Ok(results) => { - values.set(results); + calculate_button.connect_clicked(clone!( + #[strong] + model_for_events, + move |_| match parse_fields(all_inputs.clone()) { + Ok(results) => { + values.set(results); - model_for_events.items_changed(0, 0, 18); - model_for_events.items_changed(18, 18, 0); - } - Err(error) => { - let error_kind: Option<&str> = get_error_message(error); + let new_elem = &Frequency::new(values.get().frequency); - info_bar.set_text_label(error_kind); - info_bar.show_infobar(5u64); + let exist_elem_pos = model_for_events.find_with_equal_func(|elem| { + elem.downcast_ref::().unwrap().frequency() == new_elem.frequency() + }); + + match exist_elem_pos { + Some(_) => { + info_bar.set_text_label(Some("Данная частота уже была задана.")); + info_bar.show_infobar(5u64); + } + None => { + model_for_events.append(&Frequency::new(values.get().frequency)); + + model_for_events.items_changed(0, 0, 1); + model_for_events.items_changed(1, 1, 0); + } + } + } + Err(error) => { + let error_kind: Option<&str> = get_error_message(error); + + info_bar.set_text_label(error_kind); + info_bar.show_infobar(5u64); + } } - }); + )); wrapper.append(&input_block); wrapper.append(&calculate_button);