From 009b4ff5e7703ca14ab7350e9141e8bbc436e014 Mon Sep 17 00:00:00 2001 From: GovanifY Date: Thu, 20 Feb 2025 13:14:54 +0100 Subject: [PATCH] QT/Settings: ensure that a memory card is formatted before conversion --- .../Settings/MemoryCardSettingsWidget.cpp | 21 +++++++++++++++++++ pcsx2-qt/Settings/MemoryCardSettingsWidget.h | 1 + 2 files changed, 22 insertions(+) diff --git a/pcsx2-qt/Settings/MemoryCardSettingsWidget.cpp b/pcsx2-qt/Settings/MemoryCardSettingsWidget.cpp index d33097eef5..4dd0ea9178 100644 --- a/pcsx2-qt/Settings/MemoryCardSettingsWidget.cpp +++ b/pcsx2-qt/Settings/MemoryCardSettingsWidget.cpp @@ -183,6 +183,16 @@ QString MemoryCardSettingsWidget::getSelectedCard() const return ret; } +bool MemoryCardSettingsWidget::isSelectedCardFormatted() const +{ + QString ret; + + const QList selection(m_ui.cardList->selectedItems()); + if (!selection.empty()) + return selection[0]->data(0, Qt::UserRole).toBool(); + return false; +} + void MemoryCardSettingsWidget::updateCardActions() { QString selectedCard = getSelectedCard(); @@ -263,6 +273,13 @@ void MemoryCardSettingsWidget::convertCard() if (selectedCard.isEmpty()) return; + if (!isSelectedCardFormatted()) + { + QMessageBox::critical(this, tr("Error"), tr("Cannot convert an unformatted memory card.")); + return; + } + + MemoryCardConvertDialog dialog(QtUtils::GetRootWidget(this), selectedCard); if (dialog.IsSetup() && dialog.exec() == QDialog::Accepted) @@ -442,6 +459,10 @@ void MemoryCardListWidget::refresh(SettingsWindow* dialog) item->setText(1, getSizeSummary(mcd)); item->setText(2, mcd.formatted ? tr("Yes") : tr("No")); item->setText(3, mtime.toString(QLocale::system().dateTimeFormat(QLocale::ShortFormat))); + + // store formatted metadata + item->setData(0, Qt::UserRole, mcd.formatted); + addTopLevelItem(item); } } diff --git a/pcsx2-qt/Settings/MemoryCardSettingsWidget.h b/pcsx2-qt/Settings/MemoryCardSettingsWidget.h index 768a9a5d7a..708a747668 100644 --- a/pcsx2-qt/Settings/MemoryCardSettingsWidget.h +++ b/pcsx2-qt/Settings/MemoryCardSettingsWidget.h @@ -97,6 +97,7 @@ private: void createCard(); QString getSelectedCard() const; + bool isSelectedCardFormatted() const; void updateCardActions(); void deleteCard(); void renameCard();