mirror of
https://github.com/BetterCorp/BetterFrame.git
synced 2026-05-26 17:56:34 +00:00
feat(kiosk): immediate first heartbeat + loading spinner
Heartbeat slept 60s before first send, so admin Hardware panel showed "—" right after pairing/boot. Reorder: fire once, then sleep. Add a GTK spinner under the logo on the idle/pairing screens so users see the kiosk is alive and working rather than staring at a static splash.
This commit is contained in:
parent
70fd4ff7f6
commit
46b66fd62b
1 changed files with 16 additions and 3 deletions
|
|
@ -201,12 +201,14 @@ fn activate(app: &Application) {
|
|||
}
|
||||
});
|
||||
|
||||
// Heartbeat loop — reports display geometry + hwmon
|
||||
// Heartbeat loop — reports display geometry + hwmon. Fire once
|
||||
// immediately so admin "Hardware" panel populates without waiting a
|
||||
// full minute after boot/pair.
|
||||
loop {
|
||||
std::thread::sleep(std::time::Duration::from_secs(60));
|
||||
let displays = query_displays();
|
||||
let hw = hwmon::read();
|
||||
server::heartbeat(&server, &key, &displays, &hw);
|
||||
std::thread::sleep(std::time::Duration::from_secs(60));
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -369,6 +371,7 @@ fn show_pairing_code(window: &ApplicationWindow, code: &str) {
|
|||
vbox.append(&title);
|
||||
vbox.append(&code_label);
|
||||
vbox.append(&hint);
|
||||
vbox.append(&spinner(28));
|
||||
window.set_child(Some(&vbox));
|
||||
}
|
||||
|
||||
|
|
@ -890,15 +893,25 @@ fn hide_cursor_on(window: &ApplicationWindow) {
|
|||
}
|
||||
|
||||
fn show_logo(window: &ApplicationWindow) {
|
||||
let vbox = GtkBox::new(Orientation::Vertical, 0);
|
||||
let vbox = GtkBox::new(Orientation::Vertical, 24);
|
||||
vbox.set_valign(gtk::Align::Center);
|
||||
vbox.set_halign(gtk::Align::Center);
|
||||
vbox.set_vexpand(true);
|
||||
vbox.set_hexpand(true);
|
||||
vbox.append(&logo_picture(BETTERFRAME_LOGO_SVG, 480, 118, "idle-logo"));
|
||||
vbox.append(&spinner(36));
|
||||
window.set_child(Some(&vbox));
|
||||
}
|
||||
|
||||
/// A centered GTK spinner sized at `px` pixels. Already spinning.
|
||||
fn spinner(px: i32) -> gtk::Spinner {
|
||||
let s = gtk::Spinner::new();
|
||||
s.set_size_request(px, px);
|
||||
s.set_halign(gtk::Align::Center);
|
||||
s.start();
|
||||
s
|
||||
}
|
||||
|
||||
fn none_cell() -> gtk::Widget {
|
||||
placeholder(None)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue