Plan document session prompts

This commit is contained in:
2026-06-05 08:07:54 +02:00
parent 5def47cdcc
commit e5526c6d0a
11 changed files with 316 additions and 26 deletions

View File

@@ -1,5 +1,6 @@
#pragma once
#include "app_core/app_dialog.h"
#include "app_core/document_route.h"
#include "foundation/result.h"
@@ -55,6 +56,14 @@ enum class DocumentOpenPlanAction {
prompt_import_ppbr,
};
enum class DocumentSessionPromptKind {
close_unsaved_document,
save_before_workflow_continue,
new_document_overwrite,
document_file_overwrite,
document_save_error,
};
class DocumentOpenServices {
public:
virtual ~DocumentOpenServices() = default;
@@ -135,6 +144,47 @@ public:
virtual void prompt_overwrite_new_document(const NewDocumentPlan& plan) = 0;
};
[[nodiscard]] inline AppMessageDialogPlan plan_document_session_prompt(
DocumentSessionPromptKind kind,
std::string_view document_name = {})
{
switch (kind) {
case DocumentSessionPromptKind::close_unsaved_document:
return plan_app_message_dialog(
"Unsaved document",
"Do you want to close without saving?",
true,
"Yes",
"No");
case DocumentSessionPromptKind::save_before_workflow_continue:
return plan_app_message_dialog(
"Unsaved document",
"Would you like to save this document before closing?",
true,
"Yes",
"No");
case DocumentSessionPromptKind::new_document_overwrite:
return plan_app_message_dialog(
"Warning",
"A document with this name already exists, continue?",
true);
case DocumentSessionPromptKind::document_file_overwrite:
{
std::string message = "Are you sure you want to overwrite ";
message += document_name;
message += "?";
return plan_app_message_dialog("Warning", message, true);
}
case DocumentSessionPromptKind::document_save_error:
return plan_app_message_dialog(
"Saving Error",
"There was a problem saving the document",
false);
}
return plan_app_message_dialog("Warning", "", false);
}
[[nodiscard]] constexpr ProjectOpenDecision plan_project_open(bool has_unsaved_changes) noexcept
{
return has_unsaved_changes