Skip to content

Commit 88d95b3

Browse files
committed
Todo example using modality in C++
1 parent 1840a93 commit 88d95b3

File tree

1 file changed

+22
-11
lines changed

1 file changed

+22
-11
lines changed

examples/todo/cpp/app.cpp

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,31 @@ AppState create_ui()
3535
}
3636
});
3737

38-
demo->on_popup_confirmed(
39-
[demo = slint::ComponentWeakHandle(demo)] { (*demo.lock())->window().hide(); });
40-
41-
demo->window().on_close_requested([todo_model, demo = slint::ComponentWeakHandle(demo)] {
42-
int count = todo_model->row_count();
43-
for (int i = 0; i < count; ++i) {
44-
if (!todo_model->row_data(i)->checked) {
45-
(*demo.lock())->invoke_show_confirm_popup();
46-
return slint::CloseRequestResponse::KeepWindowShown;
47-
}
38+
auto confirm_dialog = todo_ui::ConfirmDialog::create();
39+
confirm_dialog->window().set_modality(demo->window());
40+
confirm_dialog->on_yes_clicked([demo = slint::ComponentWeakHandle(demo),
41+
confirm_dialog = slint::ComponentWeakHandle(confirm_dialog)] {
42+
if (auto d = demo.lock()) {
43+
(*d)->window().hide();
4844
}
49-
return slint::CloseRequestResponse::HideWindow;
45+
(*confirm_dialog.lock())->window().hide();
46+
});
47+
confirm_dialog->on_no_clicked([confirm_dialog = slint::ComponentWeakHandle(confirm_dialog)] {
48+
(*confirm_dialog.lock())->window().hide();
5049
});
5150

51+
demo->window().on_close_requested(
52+
[todo_model, demo = slint::ComponentWeakHandle(demo), confirm_dialog] {
53+
int count = todo_model->row_count();
54+
for (int i = 0; i < count; ++i) {
55+
if (!todo_model->row_data(i)->checked) {
56+
confirm_dialog->window().show();
57+
return slint::CloseRequestResponse::KeepWindowShown;
58+
}
59+
}
60+
return slint::CloseRequestResponse::HideWindow;
61+
});
62+
5263
demo->set_show_header(true);
5364

5465
demo->on_apply_sorting_and_filtering([todo_model, demo = slint::ComponentWeakHandle(demo)] {

0 commit comments

Comments
 (0)