From cfbe59868bd0f12a59d9c1f4eb386d71597b84ba Mon Sep 17 00:00:00 2001 From: BruebachL <44814898+BruebachL@users.noreply.github.com> Date: Sun, 18 May 2025 04:25:13 +0200 Subject: [PATCH] [VDS] Add prompt before overwriting existing files when converting to .cod (#5926) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add prompt before overwriting existing files. * Lint. --------- Co-authored-by: Lukas BrĂ¼bach --- .../deck_preview_deck_tags_display_widget.cpp | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp index 8c4723c37..d446589d0 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.cpp @@ -12,6 +12,7 @@ #include #include #include +#include DeckPreviewDeckTagsDisplayWidget::DeckPreviewDeckTagsDisplayWidget(QWidget *_parent, DeckList *_deckList) : QWidget(_parent), deckList(nullptr) @@ -77,6 +78,21 @@ static QStringList getAllFiles(const QString &filePath) return allFiles; } +bool confirmOverwriteIfExists(QWidget *parent, const QString &filePath) +{ + QFileInfo fileInfo(filePath); + QString newFileName = QDir::toNativeSeparators(fileInfo.path() + "/" + fileInfo.completeBaseName() + ".cod"); + + if (QFile::exists(newFileName)) { + QMessageBox::StandardButton reply = + QMessageBox::question(parent, QObject::tr("Overwrite Existing File?"), + QObject::tr("A .cod version of this deck already exists. Overwrite it?"), + QMessageBox::Yes | QMessageBox::No); + return reply == QMessageBox::Yes; + } + return true; // Safe to proceed +} + void DeckPreviewDeckTagsDisplayWidget::openTagEditDlg() { if (qobject_cast(parentWidget())) { @@ -91,6 +107,10 @@ void DeckPreviewDeckTagsDisplayWidget::openTagEditDlg() // Retrieve saved preference if the prompt is disabled if (!SettingsCache::instance().getVisualDeckStoragePromptForConversion()) { if (SettingsCache::instance().getVisualDeckStorageAlwaysConvert()) { + + if (!confirmOverwriteIfExists(this, deckPreviewWidget->filePath)) + return; + deckPreviewWidget->deckLoader->convertToCockatriceFormat(deckPreviewWidget->filePath); deckPreviewWidget->filePath = deckPreviewWidget->deckLoader->getLastFileName(); deckPreviewWidget->refreshBannerCardText(); @@ -100,6 +120,10 @@ void DeckPreviewDeckTagsDisplayWidget::openTagEditDlg() // Show the dialog to the user DialogConvertDeckToCodFormat conversionDialog(parentWidget()); if (conversionDialog.exec() == QDialog::Accepted) { + + if (!confirmOverwriteIfExists(this, deckPreviewWidget->filePath)) + return; + deckPreviewWidget->deckLoader->convertToCockatriceFormat(deckPreviewWidget->filePath); deckPreviewWidget->filePath = deckPreviewWidget->deckLoader->getLastFileName(); deckPreviewWidget->refreshBannerCardText();