37 lines
831 B
C++
37 lines
831 B
C++
#pragma once
|
|
|
|
namespace pp::app {
|
|
|
|
enum class ProjectOpenDecision {
|
|
open_now,
|
|
prompt_discard_unsaved,
|
|
};
|
|
|
|
enum class CloseRequestDecision {
|
|
close_now,
|
|
show_unsaved_prompt,
|
|
wait_for_existing_prompt,
|
|
};
|
|
|
|
[[nodiscard]] constexpr ProjectOpenDecision plan_project_open(bool has_unsaved_changes) noexcept
|
|
{
|
|
return has_unsaved_changes
|
|
? ProjectOpenDecision::prompt_discard_unsaved
|
|
: ProjectOpenDecision::open_now;
|
|
}
|
|
|
|
[[nodiscard]] constexpr CloseRequestDecision plan_close_request(
|
|
bool has_unsaved_changes,
|
|
bool close_prompt_already_open) noexcept
|
|
{
|
|
if (!has_unsaved_changes) {
|
|
return CloseRequestDecision::close_now;
|
|
}
|
|
|
|
return close_prompt_already_open
|
|
? CloseRequestDecision::wait_for_existing_prompt
|
|
: CloseRequestDecision::show_unsaved_prompt;
|
|
}
|
|
|
|
}
|