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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user