feat(gui): wire adw::ToastOverlay for error surfacing
This commit is contained in:
@@ -12,14 +12,16 @@ pub(crate) struct KeysPage {
|
|||||||
pub root: adw::Bin,
|
pub root: adw::Bin,
|
||||||
daemon: Rc<RefCell<Option<Daemon>>>,
|
daemon: Rc<RefCell<Option<Daemon>>>,
|
||||||
parent_window: gtk::Window,
|
parent_window: gtk::Window,
|
||||||
|
toast_overlay: adw::ToastOverlay,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl KeysPage {
|
impl KeysPage {
|
||||||
pub fn new(parent_window: gtk::Window) -> Rc<Self> {
|
pub fn new(parent_window: gtk::Window, toast_overlay: adw::ToastOverlay) -> Rc<Self> {
|
||||||
let page = Rc::new(Self {
|
let page = Rc::new(Self {
|
||||||
root: adw::Bin::new(),
|
root: adw::Bin::new(),
|
||||||
daemon: Rc::new(RefCell::new(None)),
|
daemon: Rc::new(RefCell::new(None)),
|
||||||
parent_window,
|
parent_window,
|
||||||
|
toast_overlay,
|
||||||
});
|
});
|
||||||
let p = page.clone();
|
let p = page.clone();
|
||||||
glib::MainContext::default().spawn_local(async move {
|
glib::MainContext::default().spawn_local(async move {
|
||||||
@@ -165,9 +167,8 @@ impl KeysPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn show_toast(self: &Rc<Self>, msg: &str) {
|
fn show_toast(self: &Rc<Self>, msg: &str) {
|
||||||
// ToastOverlay wiring lands in Task 7. Until then write to stderr so
|
let toast = adw::Toast::builder().title(msg).timeout(5).build();
|
||||||
// manual smoke can observe what would be shown.
|
self.toast_overlay.add_toast(toast);
|
||||||
eprintln!("[gui toast] {msg}");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,8 @@ fn main() -> glib::ExitCode {
|
|||||||
.build();
|
.build();
|
||||||
header.set_title_widget(Some(&switcher));
|
header.set_title_widget(Some(&switcher));
|
||||||
|
|
||||||
let keys = keys_page::KeysPage::new(win.clone().upcast());
|
let toast_overlay = adw::ToastOverlay::new();
|
||||||
|
let keys = keys_page::KeysPage::new(win.clone().upcast(), toast_overlay.clone());
|
||||||
stack.add_titled(&keys.root, Some("keys"), "Keys");
|
stack.add_titled(&keys.root, Some("keys"), "Keys");
|
||||||
|
|
||||||
// ToolbarView is libadwaita v1_4-gated; the project sticks with the
|
// ToolbarView is libadwaita v1_4-gated; the project sticks with the
|
||||||
@@ -44,8 +45,9 @@ fn main() -> glib::ExitCode {
|
|||||||
layout.append(&header);
|
layout.append(&header);
|
||||||
layout.append(&stack);
|
layout.append(&stack);
|
||||||
stack.set_vexpand(true);
|
stack.set_vexpand(true);
|
||||||
|
toast_overlay.set_child(Some(&layout));
|
||||||
|
|
||||||
win.set_content(Some(&layout));
|
win.set_content(Some(&toast_overlay));
|
||||||
win.present();
|
win.present();
|
||||||
});
|
});
|
||||||
app.run()
|
app.run()
|
||||||
|
|||||||
Reference in New Issue
Block a user