Extract document-session overwrite prompt helper
This commit is contained in:
@@ -148,6 +148,23 @@ void create_legacy_new_document(
|
||||
pp::panopainter::close_legacy_dialog_and_hide_keyboard(app, *dialog);
|
||||
}
|
||||
|
||||
template <typename Dialog, typename Plan, typename AcceptAction>
|
||||
void wire_legacy_overwrite_prompt_ok(
|
||||
App& app,
|
||||
const std::shared_ptr<NodeMessageBox>& msgbox,
|
||||
const std::shared_ptr<Dialog>& dialog,
|
||||
const Plan& plan,
|
||||
AcceptAction&& accept_action)
|
||||
{
|
||||
auto* app_ptr = &app;
|
||||
auto msgbox_ptr = msgbox;
|
||||
auto dialog_ptr = dialog;
|
||||
msgbox->btn_ok->on_click = [app_ptr, msgbox_ptr, dialog_ptr, plan, accept_action = std::forward<AcceptAction>(accept_action)](Node*) {
|
||||
accept_action(*app_ptr, plan, dialog_ptr);
|
||||
pp::panopainter::close_legacy_dialog_node(*msgbox_ptr);
|
||||
};
|
||||
}
|
||||
|
||||
class LegacyNewDocumentServices final : public pp::app::NewDocumentServices {
|
||||
public:
|
||||
LegacyNewDocumentServices(App& app, std::shared_ptr<NodeDialogNewDoc> dialog) noexcept
|
||||
@@ -167,12 +184,7 @@ public:
|
||||
app_,
|
||||
pp::app::plan_document_session_prompt(
|
||||
pp::app::DocumentSessionPromptKind::new_document_overwrite));
|
||||
auto* app = &app_;
|
||||
auto dialog = dialog_;
|
||||
msgbox->btn_ok->on_click = [app, msgbox, dialog, plan](Node*) {
|
||||
create_legacy_new_document(*app, plan, dialog);
|
||||
pp::panopainter::close_legacy_dialog_node(*msgbox);
|
||||
};
|
||||
wire_legacy_overwrite_prompt_ok(app_, msgbox, dialog_, plan, create_legacy_new_document);
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -217,12 +229,7 @@ public:
|
||||
pp::app::plan_document_session_prompt(
|
||||
pp::app::DocumentSessionPromptKind::document_file_overwrite,
|
||||
plan.target.name));
|
||||
auto* app = &app_;
|
||||
auto dialog = dialog_;
|
||||
msgbox->btn_ok->on_click = [app, msgbox, dialog, plan](Node*) {
|
||||
save_legacy_document_file(*app, plan, dialog);
|
||||
pp::panopainter::close_legacy_dialog_node(*msgbox);
|
||||
};
|
||||
wire_legacy_overwrite_prompt_ok(app_, msgbox, dialog_, plan, save_legacy_document_file);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user