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