From 76a38bd882ada5a14d696a170dfe32b4826f20ab Mon Sep 17 00:00:00 2001 From: Hannes Kuchelmeister Date: Sun, 28 Apr 2024 23:54:12 +0200 Subject: [PATCH] use the view macro better and use property binding --- src/app.rs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/app.rs b/src/app.rs index 51c4507..de7e816 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,5 +1,4 @@ use crate::gtk::Align; -use crate::gtk::Spinner; use crate::util::toolbox::ToolbxContainer; use relm4::adw::prelude::PreferencesGroupExt; use relm4::factory::FactoryHashMap; @@ -29,7 +28,7 @@ pub(super) struct App { unsupported_dialog: Controller, about_dialog: Controller, containers: FactoryHashMap, - refresh_spinner: Spinner, + spinning: bool, } #[derive(Debug)] @@ -113,9 +112,12 @@ impl Component for App { set_margin_all: 30, - set_header_suffix: Some( - &model.refresh_spinner - ), + + #[wrap(Some)] + set_header_suffix: refresh_spinner = >k::Spinner { + #[watch] + set_spinning: model.spinning + }, #[local_ref] container_box -> gtk::ListBox { @@ -151,13 +153,11 @@ impl Component for App { let containers = FactoryHashMap::builder().launch_default().detach(); - let refresh_spinner = gtk::Spinner::new(); - let model = Self { about_dialog, unsupported_dialog, containers, - refresh_spinner, + spinning: true, }; let container_box = model.containers.widget(); @@ -212,7 +212,7 @@ impl Component for App { AppCommandMsg::PrerequisitsInstalled(true) | AppCommandMsg::InitiateRefresh => { // TODO: start process of fetching toolboxes - self.refresh_spinner.set_spinning(true); + self.spinning = true; sender.spawn_oneshot_command(|| { AppCommandMsg::UpdateToolboxes(ToolbxContainer::get_toolboxes()) }) @@ -238,7 +238,7 @@ impl Component for App { self.containers.remove(&hash); }); - self.refresh_spinner.set_spinning(false); + self.spinning = false; sender.spawn_oneshot_command(|| { sleep(Duration::from_millis(2000));