From 3315b38806f962da718492d9428a64b85eec8397 Mon Sep 17 00:00:00 2001 From: uku Date: Mon, 19 May 2025 19:26:47 +0200 Subject: [PATCH] fix: show loading spinner during startup --- src/main.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index a445eee..b8926dd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,6 +12,7 @@ use relm4::{ Component, ComponentController, Controller, RelmApp, Sender, adw::{self, prelude::*}, gtk::{self, gio}, + loading_widgets::LoadingWidgets, prelude::{AsyncComponent, AsyncComponentParts}, tokio, }; @@ -264,8 +265,6 @@ impl AsyncComponent for Tyrolienne { .forward(sender.input_sender(), |_| Message::Nothing), }; - // TODO consider using the "loading" (?) mechanism from relm4 - // https://relm4.org/book/stable/threads_and_async/async.html let folders = match zipline::get_folders(&model.config).await { Ok(v) => v, Err(e) => { @@ -296,6 +295,21 @@ impl AsyncComponent for Tyrolienne { AsyncComponentParts { model, widgets } } + fn init_loading_widgets(root: Self::Root) -> Option { + relm4::view! { + #[local] + root { + #[name(spinner)] + gtk::Spinner { + start: (), + set_halign: gtk::Align::Center, + } + } + } + + Some(LoadingWidgets::new(root, spinner)) + } + async fn update( &mut self, message: Self::Input,