Skip to content

Commit

Permalink
Todo demo: implement the dialog as a separate window
Browse files Browse the repository at this point in the history
  • Loading branch information
ogoffart authored and bjorn committed Nov 28, 2023
1 parent 547ba6d commit 2504b9f
Showing 1 changed file with 28 additions and 11 deletions.
39 changes: 28 additions & 11 deletions examples/todo/rust/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,26 +45,43 @@ pub fn main() {
}
});

slint::slint! {
import { StandardButton } from "std-widgets.slint";

export component ConfirmDialog inherits Dialog {
Text {
text: "Some items are not done, are you sure you wish to quit?";
wrap: word-wrap;
}

StandardButton { kind: yes; }
StandardButton { kind: no; }
}
}
let confirm_dialog = ConfirmDialog::new().unwrap();

let weak_window = main_window.as_weak();
main_window.on_popup_confirmed(move || {
let window = weak_window.unwrap();
window.hide().unwrap();
let weak_confirm_dialog = confirm_dialog.as_weak();
confirm_dialog.on_yes_clicked(move || {
weak_window.unwrap().hide().unwrap();
weak_confirm_dialog.unwrap().hide().unwrap();
});
let weak_confirm_dialog = confirm_dialog.as_weak();
confirm_dialog.on_no_clicked(move || {
weak_confirm_dialog.unwrap().hide().unwrap();
});

{
let weak_window = main_window.as_weak();
main_window.window().on_close_requested({
let todo_model = todo_model.clone();
main_window.window().on_close_requested(move || {
let window = weak_window.unwrap();

move || {
if todo_model.iter().any(|t| !t.checked) {
window.invoke_show_confirm_popup();
confirm_dialog.show().unwrap();
slint::CloseRequestResponse::KeepWindowShown
} else {
slint::CloseRequestResponse::HideWindow
}
});
}
}
});

main_window.on_apply_sorting_and_filtering({
let weak_window = main_window.as_weak();
Expand Down

0 comments on commit 2504b9f

Please sign in to comment.