1
0
mirror of https://github.com/OpenTTD/OpenTTD synced 2026-01-15 08:22:34 +01:00

Change: Ask for confirmation before deleting a savegame / scenario / heightmap. (#14621)

This commit is contained in:
Kuhnovic
2025-09-15 13:14:56 +02:00
committed by GitHub
parent 7240ed5817
commit 7d252ff7fc
2 changed files with 23 additions and 15 deletions

View File

@@ -349,6 +349,21 @@ private:
if (confirmed) _switch_mode = SM_SAVE_HEIGHTMAP;
}
static void DeleteFileConfirmationCallback(Window *window, bool confirmed)
{
auto *save_load_window = static_cast<SaveLoadWindow*>(window);
if (confirmed) {
if (!FiosDelete(save_load_window->filename_editbox.text.GetText())) {
ShowErrorMessage(GetEncodedString(STR_ERROR_UNABLE_TO_DELETE_FILE), {}, WL_ERROR);
} else {
save_load_window->InvalidateData(SLIWD_RESCAN_FILES);
/* Reset file name to current date on successful delete */
if (save_load_window->abstract_filetype == FT_SAVEGAME) save_load_window->GenerateFileName();
}
}
}
public:
/** Generate a default save filename. */
@@ -806,31 +821,22 @@ public:
if (this->fop != SLO_SAVE) return;
if (this->IsWidgetLowered(WID_SL_DELETE_SELECTION)) { // Delete button clicked
if (!FiosDelete(this->filename_editbox.text.GetText())) {
ShowErrorMessage(GetEncodedString(STR_ERROR_UNABLE_TO_DELETE_FILE), {}, WL_ERROR);
} else {
this->InvalidateData(SLIWD_RESCAN_FILES);
/* Reset file name to current date on successful delete */
if (this->abstract_filetype == FT_SAVEGAME) GenerateFileName();
}
ShowQuery(GetEncodedString(STR_SAVELOAD_DELETE_TITLE), GetEncodedString(STR_SAVELOAD_DELETE_WARNING),
this, SaveLoadWindow::DeleteFileConfirmationCallback);
} else if (this->IsWidgetLowered(WID_SL_SAVE_GAME)) { // Save button clicked
if (this->abstract_filetype == FT_SAVEGAME || this->abstract_filetype == FT_SCENARIO) {
_file_to_saveload.name = FiosMakeSavegameName(this->filename_editbox.text.GetText());
if (FioCheckFileExists(_file_to_saveload.name, Subdirectory::SAVE_DIR)) {
ShowQuery(
GetEncodedString(STR_SAVELOAD_OVERWRITE_TITLE),
GetEncodedString(STR_SAVELOAD_OVERWRITE_WARNING),
this, SaveLoadWindow::SaveGameConfirmationCallback);
ShowQuery(GetEncodedString(STR_SAVELOAD_OVERWRITE_TITLE), GetEncodedString(STR_SAVELOAD_OVERWRITE_WARNING),
this, SaveLoadWindow::SaveGameConfirmationCallback);
} else {
_switch_mode = SM_SAVE_GAME;
}
} else {
_file_to_saveload.name = FiosMakeHeightmapName(this->filename_editbox.text.GetText());
if (FioCheckFileExists(_file_to_saveload.name, Subdirectory::SAVE_DIR)) {
ShowQuery(
GetEncodedString(STR_SAVELOAD_OVERWRITE_TITLE),
GetEncodedString(STR_SAVELOAD_OVERWRITE_WARNING),
this, SaveLoadWindow::SaveHeightmapConfirmationCallback);
ShowQuery(GetEncodedString(STR_SAVELOAD_OVERWRITE_TITLE), GetEncodedString(STR_SAVELOAD_OVERWRITE_WARNING),
this, SaveLoadWindow::SaveHeightmapConfirmationCallback);
} else {
_switch_mode = SM_SAVE_HEIGHTMAP;
}

View File

@@ -3348,6 +3348,8 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF:
STR_SAVELOAD_FILTER_TITLE :{BLACK}Filter:
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Overwrite File
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Are you sure you want to overwrite the existing file?
STR_SAVELOAD_DELETE_TITLE :{WHITE}Delete File
STR_SAVELOAD_DELETE_WARNING :{YELLOW}Are you sure you want to delete the file?
STR_SAVELOAD_DIRECTORY :{RAW_STRING} (Directory)
STR_SAVELOAD_PARENT_DIRECTORY :{RAW_STRING} (Parent directory)