use adw::StatusPage;
use gtk::{
glib::{timeout_add_local, ControlFlow},
prelude::WidgetExt,
Spinner, };
use std::time::Duration;
const SPINNER_SIZE: i32 = 32; const DEFAULT_TITLE: &str = "Loading..";
pub fn build(show_with_delay: Option<Duration>) -> StatusPage {
let spinner = Spinner::builder()
.width_request(SPINNER_SIZE)
.height_request(SPINNER_SIZE)
.build();
let status_page = StatusPage::builder()
.child(&spinner)
.title(DEFAULT_TITLE)
.visible(false)
.build();
match show_with_delay {
Some(duration) => {
timeout_add_local(duration, {
let status_page = status_page.clone();
move || {
status_page.set_visible(true);
spinner.start();
ControlFlow::Break
}
});
}
None => {
status_page.set_visible(true);
spinner.start();
}
}
status_page
}