GCMemcard: Rework construction logic to better match our knowledge of the format, while providing better error reporting facilities.

This commit is contained in:
Admiral H. Curtiss
2019-04-21 15:18:01 +02:00
parent 24718c1a38
commit b54a49eaaf
5 changed files with 369 additions and 223 deletions

View File

@ -241,13 +241,14 @@ void GCMemcardManager::UpdateActions()
void GCMemcardManager::SetSlotFile(int slot, QString path)
{
auto memcard = std::make_unique<GCMemcard>(path.toStdString());
// TODO: Check error codes and give reasonable error messages.
auto [error_code, memcard] = GCMemcard::Open(path.toStdString());
if (!memcard->IsValid())
if (error_code.HasCriticalErrors() || !memcard || !memcard->IsValid())
return;
m_slot_file_edit[slot]->setText(path);
m_slot_memcard[slot] = std::move(memcard);
m_slot_memcard[slot] = std::make_unique<GCMemcard>(std::move(*memcard));
UpdateSlotTable(slot);
UpdateActions();