mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-03-12 06:39:14 +01:00
Use Slot in GCMemcardManager
This commit is contained in:
parent
777bb4d82c
commit
9109258b85
@ -42,6 +42,8 @@
|
|||||||
#include "DolphinQt/QtUtils/DolphinFileDialog.h"
|
#include "DolphinQt/QtUtils/DolphinFileDialog.h"
|
||||||
#include "DolphinQt/QtUtils/ModalMessageBox.h"
|
#include "DolphinQt/QtUtils/ModalMessageBox.h"
|
||||||
|
|
||||||
|
using namespace ExpansionInterface;
|
||||||
|
|
||||||
constexpr int ROW_HEIGHT = 36;
|
constexpr int ROW_HEIGHT = 36;
|
||||||
constexpr int COLUMN_WIDTH_FILENAME = 100;
|
constexpr int COLUMN_WIDTH_FILENAME = 100;
|
||||||
constexpr int COLUMN_WIDTH_BANNER = Memcard::MEMORY_CARD_BANNER_WIDTH + 6;
|
constexpr int COLUMN_WIDTH_BANNER = Memcard::MEMORY_CARD_BANNER_WIDTH + 6;
|
||||||
@ -55,6 +57,14 @@ constexpr int COLUMN_INDEX_ICON = 3;
|
|||||||
constexpr int COLUMN_INDEX_BLOCKS = 4;
|
constexpr int COLUMN_INDEX_BLOCKS = 4;
|
||||||
constexpr int COLUMN_COUNT = 5;
|
constexpr int COLUMN_COUNT = 5;
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
Slot OtherSlot(Slot slot)
|
||||||
|
{
|
||||||
|
return slot == Slot::A ? Slot::B : Slot::A;
|
||||||
|
}
|
||||||
|
}; // namespace
|
||||||
|
|
||||||
struct GCMemcardManager::IconAnimationData
|
struct GCMemcardManager::IconAnimationData
|
||||||
{
|
{
|
||||||
// the individual frames
|
// the individual frames
|
||||||
@ -70,7 +80,7 @@ GCMemcardManager::GCMemcardManager(QWidget* parent) : QDialog(parent)
|
|||||||
CreateWidgets();
|
CreateWidgets();
|
||||||
ConnectWidgets();
|
ConnectWidgets();
|
||||||
|
|
||||||
SetActiveSlot(0);
|
SetActiveSlot(Slot::A);
|
||||||
UpdateActions();
|
UpdateActions();
|
||||||
|
|
||||||
m_timer = new QTimer(this);
|
m_timer = new QTimer(this);
|
||||||
@ -117,52 +127,54 @@ void GCMemcardManager::CreateWidgets()
|
|||||||
|
|
||||||
auto* layout = new QGridLayout;
|
auto* layout = new QGridLayout;
|
||||||
|
|
||||||
for (int i = 0; i < SLOT_COUNT; i++)
|
for (Slot slot : MEMCARD_SLOTS)
|
||||||
{
|
{
|
||||||
m_slot_group[i] = new QGroupBox(i == 0 ? tr("Slot A") : tr("Slot B"));
|
m_slot_group[slot] = new QGroupBox(slot == Slot::A ? tr("Slot A") : tr("Slot B"));
|
||||||
m_slot_file_edit[i] = new QLineEdit;
|
m_slot_file_edit[slot] = new QLineEdit;
|
||||||
m_slot_open_button[i] = new QPushButton(tr("&Open..."));
|
m_slot_open_button[slot] = new QPushButton(tr("&Open..."));
|
||||||
m_slot_create_button[i] = new QPushButton(tr("&Create..."));
|
m_slot_create_button[slot] = new QPushButton(tr("&Create..."));
|
||||||
m_slot_table[i] = new QTableWidget;
|
m_slot_table[slot] = new QTableWidget;
|
||||||
m_slot_table[i]->setTabKeyNavigation(false);
|
m_slot_table[slot]->setTabKeyNavigation(false);
|
||||||
m_slot_stat_label[i] = new QLabel;
|
m_slot_stat_label[slot] = new QLabel;
|
||||||
|
|
||||||
m_slot_table[i]->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
m_slot_table[slot]->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||||
m_slot_table[i]->setSelectionBehavior(QAbstractItemView::SelectRows);
|
m_slot_table[slot]->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
m_slot_table[i]->setSortingEnabled(true);
|
m_slot_table[slot]->setSortingEnabled(true);
|
||||||
m_slot_table[i]->horizontalHeader()->setHighlightSections(false);
|
m_slot_table[slot]->horizontalHeader()->setHighlightSections(false);
|
||||||
m_slot_table[i]->horizontalHeader()->setMinimumSectionSize(0);
|
m_slot_table[slot]->horizontalHeader()->setMinimumSectionSize(0);
|
||||||
m_slot_table[i]->horizontalHeader()->setSortIndicatorShown(true);
|
m_slot_table[slot]->horizontalHeader()->setSortIndicatorShown(true);
|
||||||
m_slot_table[i]->setColumnCount(COLUMN_COUNT);
|
m_slot_table[slot]->setColumnCount(COLUMN_COUNT);
|
||||||
m_slot_table[i]->setHorizontalHeaderItem(COLUMN_INDEX_FILENAME,
|
m_slot_table[slot]->setHorizontalHeaderItem(COLUMN_INDEX_FILENAME,
|
||||||
new QTableWidgetItem(tr("Filename")));
|
new QTableWidgetItem(tr("Filename")));
|
||||||
m_slot_table[i]->setHorizontalHeaderItem(COLUMN_INDEX_BANNER,
|
m_slot_table[slot]->setHorizontalHeaderItem(COLUMN_INDEX_BANNER,
|
||||||
new QTableWidgetItem(tr("Banner")));
|
new QTableWidgetItem(tr("Banner")));
|
||||||
m_slot_table[i]->setHorizontalHeaderItem(COLUMN_INDEX_TEXT, new QTableWidgetItem(tr("Title")));
|
m_slot_table[slot]->setHorizontalHeaderItem(COLUMN_INDEX_TEXT,
|
||||||
m_slot_table[i]->setHorizontalHeaderItem(COLUMN_INDEX_ICON, new QTableWidgetItem(tr("Icon")));
|
new QTableWidgetItem(tr("Title")));
|
||||||
m_slot_table[i]->setHorizontalHeaderItem(COLUMN_INDEX_BLOCKS,
|
m_slot_table[slot]->setHorizontalHeaderItem(COLUMN_INDEX_ICON,
|
||||||
new QTableWidgetItem(tr("Blocks")));
|
new QTableWidgetItem(tr("Icon")));
|
||||||
m_slot_table[i]->setColumnWidth(COLUMN_INDEX_FILENAME, COLUMN_WIDTH_FILENAME);
|
m_slot_table[slot]->setHorizontalHeaderItem(COLUMN_INDEX_BLOCKS,
|
||||||
m_slot_table[i]->setColumnWidth(COLUMN_INDEX_BANNER, COLUMN_WIDTH_BANNER);
|
new QTableWidgetItem(tr("Blocks")));
|
||||||
m_slot_table[i]->setColumnWidth(COLUMN_INDEX_TEXT, COLUMN_WIDTH_TEXT);
|
m_slot_table[slot]->setColumnWidth(COLUMN_INDEX_FILENAME, COLUMN_WIDTH_FILENAME);
|
||||||
m_slot_table[i]->setColumnWidth(COLUMN_INDEX_ICON, COLUMN_WIDTH_ICON);
|
m_slot_table[slot]->setColumnWidth(COLUMN_INDEX_BANNER, COLUMN_WIDTH_BANNER);
|
||||||
m_slot_table[i]->setColumnWidth(COLUMN_INDEX_BLOCKS, COLUMN_WIDTH_BLOCKS);
|
m_slot_table[slot]->setColumnWidth(COLUMN_INDEX_TEXT, COLUMN_WIDTH_TEXT);
|
||||||
m_slot_table[i]->verticalHeader()->setDefaultSectionSize(ROW_HEIGHT);
|
m_slot_table[slot]->setColumnWidth(COLUMN_INDEX_ICON, COLUMN_WIDTH_ICON);
|
||||||
m_slot_table[i]->verticalHeader()->hide();
|
m_slot_table[slot]->setColumnWidth(COLUMN_INDEX_BLOCKS, COLUMN_WIDTH_BLOCKS);
|
||||||
m_slot_table[i]->setShowGrid(false);
|
m_slot_table[slot]->verticalHeader()->setDefaultSectionSize(ROW_HEIGHT);
|
||||||
|
m_slot_table[slot]->verticalHeader()->hide();
|
||||||
|
m_slot_table[slot]->setShowGrid(false);
|
||||||
|
|
||||||
auto* slot_layout = new QGridLayout;
|
auto* slot_layout = new QGridLayout;
|
||||||
m_slot_group[i]->setLayout(slot_layout);
|
m_slot_group[slot]->setLayout(slot_layout);
|
||||||
|
|
||||||
slot_layout->addWidget(m_slot_file_edit[i], 0, 0);
|
slot_layout->addWidget(m_slot_file_edit[slot], 0, 0);
|
||||||
slot_layout->addWidget(m_slot_open_button[i], 0, 1);
|
slot_layout->addWidget(m_slot_open_button[slot], 0, 1);
|
||||||
slot_layout->addWidget(m_slot_create_button[i], 0, 2);
|
slot_layout->addWidget(m_slot_create_button[slot], 0, 2);
|
||||||
slot_layout->addWidget(m_slot_table[i], 1, 0, 1, 3);
|
slot_layout->addWidget(m_slot_table[slot], 1, 0, 1, 3);
|
||||||
slot_layout->addWidget(m_slot_stat_label[i], 2, 0);
|
slot_layout->addWidget(m_slot_stat_label[slot], 2, 0);
|
||||||
|
|
||||||
layout->addWidget(m_slot_group[i], 0, i * 2, 8, 1);
|
layout->addWidget(m_slot_group[slot], 0, slot == Slot::A ? 0 : 2, 8, 1);
|
||||||
|
|
||||||
UpdateSlotTable(i);
|
UpdateSlotTable(slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
layout->addWidget(m_select_button, 1, 1);
|
layout->addWidget(m_select_button, 1, 1);
|
||||||
@ -179,7 +191,8 @@ void GCMemcardManager::CreateWidgets()
|
|||||||
void GCMemcardManager::ConnectWidgets()
|
void GCMemcardManager::ConnectWidgets()
|
||||||
{
|
{
|
||||||
connect(m_button_box, &QDialogButtonBox::rejected, this, &QDialog::reject);
|
connect(m_button_box, &QDialogButtonBox::rejected, this, &QDialog::reject);
|
||||||
connect(m_select_button, &QPushButton::clicked, [this] { SetActiveSlot(!m_active_slot); });
|
connect(m_select_button, &QPushButton::clicked,
|
||||||
|
[this] { SetActiveSlot(OtherSlot(m_active_slot)); });
|
||||||
connect(m_export_gci_action, &QAction::triggered,
|
connect(m_export_gci_action, &QAction::triggered,
|
||||||
[this] { ExportFiles(Memcard::SavefileFormat::GCI); });
|
[this] { ExportFiles(Memcard::SavefileFormat::GCI); });
|
||||||
connect(m_export_gcs_action, &QAction::triggered,
|
connect(m_export_gcs_action, &QAction::triggered,
|
||||||
@ -191,7 +204,7 @@ void GCMemcardManager::ConnectWidgets()
|
|||||||
connect(m_copy_button, &QPushButton::clicked, this, &GCMemcardManager::CopyFiles);
|
connect(m_copy_button, &QPushButton::clicked, this, &GCMemcardManager::CopyFiles);
|
||||||
connect(m_fix_checksums_button, &QPushButton::clicked, this, &GCMemcardManager::FixChecksums);
|
connect(m_fix_checksums_button, &QPushButton::clicked, this, &GCMemcardManager::FixChecksums);
|
||||||
|
|
||||||
for (int slot = 0; slot < SLOT_COUNT; slot++)
|
for (Slot slot : MEMCARD_SLOTS)
|
||||||
{
|
{
|
||||||
connect(m_slot_file_edit[slot], &QLineEdit::textChanged,
|
connect(m_slot_file_edit[slot], &QLineEdit::textChanged,
|
||||||
[this, slot](const QString& path) { SetSlotFile(slot, path); });
|
[this, slot](const QString& path) { SetSlotFile(slot, path); });
|
||||||
@ -206,27 +219,26 @@ void GCMemcardManager::ConnectWidgets()
|
|||||||
|
|
||||||
void GCMemcardManager::LoadDefaultMemcards()
|
void GCMemcardManager::LoadDefaultMemcards()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < SLOT_COUNT; i++)
|
for (ExpansionInterface::Slot slot : ExpansionInterface::MEMCARD_SLOTS)
|
||||||
{
|
{
|
||||||
if (Config::Get(i == 0 ? Config::MAIN_SLOT_A : Config::MAIN_SLOT_B) !=
|
if (Config::Get(Config::GetInfoForEXIDevice(slot)) !=
|
||||||
ExpansionInterface::EXIDeviceType::MemoryCard)
|
ExpansionInterface::EXIDeviceType::MemoryCard)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString path = QString::fromStdString(
|
const QString path = QString::fromStdString(Config::Get(Config::GetInfoForMemcardPath(slot)));
|
||||||
Config::Get(i == 0 ? Config::MAIN_MEMCARD_A_PATH : Config::MAIN_MEMCARD_B_PATH));
|
SetSlotFile(slot, path);
|
||||||
SetSlotFile(i, path);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GCMemcardManager::SetActiveSlot(int slot)
|
void GCMemcardManager::SetActiveSlot(Slot slot)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < SLOT_COUNT; i++)
|
for (Slot slot2 : MEMCARD_SLOTS)
|
||||||
m_slot_table[i]->setEnabled(i == slot);
|
m_slot_table[slot2]->setEnabled(slot2 == slot);
|
||||||
|
|
||||||
m_select_button->setText(slot == 0 ? tr("Switch to B") : tr("Switch to A"));
|
m_select_button->setText(slot == Slot::A ? tr("Switch to B") : tr("Switch to A"));
|
||||||
m_copy_button->setText(slot == 0 ? tr("Copy to B") : tr("Copy to A"));
|
m_copy_button->setText(slot == Slot::A ? tr("Copy to B") : tr("Copy to A"));
|
||||||
|
|
||||||
m_active_slot = slot;
|
m_active_slot = slot;
|
||||||
|
|
||||||
@ -234,7 +246,7 @@ void GCMemcardManager::SetActiveSlot(int slot)
|
|||||||
UpdateActions();
|
UpdateActions();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GCMemcardManager::UpdateSlotTable(int slot)
|
void GCMemcardManager::UpdateSlotTable(Slot slot)
|
||||||
{
|
{
|
||||||
m_slot_active_icons[slot].clear();
|
m_slot_active_icons[slot].clear();
|
||||||
|
|
||||||
@ -307,7 +319,7 @@ void GCMemcardManager::UpdateActions()
|
|||||||
auto selection = m_slot_table[m_active_slot]->selectedItems();
|
auto selection = m_slot_table[m_active_slot]->selectedItems();
|
||||||
bool have_selection = selection.count();
|
bool have_selection = selection.count();
|
||||||
bool have_memcard = m_slot_memcard[m_active_slot] != nullptr;
|
bool have_memcard = m_slot_memcard[m_active_slot] != nullptr;
|
||||||
bool have_memcard_other = m_slot_memcard[!m_active_slot] != nullptr;
|
bool have_memcard_other = m_slot_memcard[OtherSlot(m_active_slot)] != nullptr;
|
||||||
|
|
||||||
m_copy_button->setEnabled(have_selection && have_memcard_other);
|
m_copy_button->setEnabled(have_selection && have_memcard_other);
|
||||||
m_export_button->setEnabled(have_selection);
|
m_export_button->setEnabled(have_selection);
|
||||||
@ -316,7 +328,7 @@ void GCMemcardManager::UpdateActions()
|
|||||||
m_fix_checksums_button->setEnabled(have_memcard);
|
m_fix_checksums_button->setEnabled(have_memcard);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GCMemcardManager::SetSlotFile(int slot, QString path)
|
void GCMemcardManager::SetSlotFile(Slot slot, QString path)
|
||||||
{
|
{
|
||||||
auto [error_code, memcard] = Memcard::GCMemcard::Open(path.toStdString());
|
auto [error_code, memcard] = Memcard::GCMemcard::Open(path.toStdString());
|
||||||
|
|
||||||
@ -337,14 +349,15 @@ void GCMemcardManager::SetSlotFile(int slot, QString path)
|
|||||||
UpdateActions();
|
UpdateActions();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GCMemcardManager::SetSlotFileInteractive(int slot)
|
void GCMemcardManager::SetSlotFileInteractive(Slot slot)
|
||||||
{
|
{
|
||||||
QString path = QDir::toNativeSeparators(DolphinFileDialog::getOpenFileName(
|
QString path = QDir::toNativeSeparators(
|
||||||
this,
|
DolphinFileDialog::getOpenFileName(this,
|
||||||
slot == 0 ? tr("Set memory card file for Slot A") : tr("Set memory card file for Slot B"),
|
slot == Slot::A ? tr("Set memory card file for Slot A") :
|
||||||
QString::fromStdString(File::GetUserPath(D_GCUSER_IDX)),
|
tr("Set memory card file for Slot B"),
|
||||||
QStringLiteral("%1 (*.raw *.gcp);;%2 (*)")
|
QString::fromStdString(File::GetUserPath(D_GCUSER_IDX)),
|
||||||
.arg(tr("GameCube Memory Cards"), tr("All Files"))));
|
QStringLiteral("%1 (*.raw *.gcp);;%2 (*)")
|
||||||
|
.arg(tr("GameCube Memory Cards"), tr("All Files"))));
|
||||||
if (!path.isEmpty())
|
if (!path.isEmpty())
|
||||||
m_slot_file_edit[slot]->setText(path);
|
m_slot_file_edit[slot]->setText(path);
|
||||||
}
|
}
|
||||||
@ -487,7 +500,7 @@ void GCMemcardManager::ExportFiles(Memcard::SavefileFormat format)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GCMemcardManager::ImportFiles(int slot, const std::vector<Memcard::Savefile>& savefiles)
|
void GCMemcardManager::ImportFiles(Slot slot, const std::vector<Memcard::Savefile>& savefiles)
|
||||||
{
|
{
|
||||||
auto& card = m_slot_memcard[slot];
|
auto& card = m_slot_memcard[slot];
|
||||||
if (!card)
|
if (!card)
|
||||||
@ -611,7 +624,7 @@ void GCMemcardManager::CopyFiles()
|
|||||||
if (!source_card)
|
if (!source_card)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto& target_card = m_slot_memcard[!m_active_slot];
|
auto& target_card = m_slot_memcard[OtherSlot(m_active_slot)];
|
||||||
if (!target_card)
|
if (!target_card)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -627,7 +640,7 @@ void GCMemcardManager::CopyFiles()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ImportFiles(!m_active_slot, savefiles);
|
ImportFiles(OtherSlot(m_active_slot), savefiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GCMemcardManager::DeleteFiles()
|
void GCMemcardManager::DeleteFiles()
|
||||||
@ -677,7 +690,7 @@ void GCMemcardManager::FixChecksums()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GCMemcardManager::CreateNewCard(int slot)
|
void GCMemcardManager::CreateNewCard(Slot slot)
|
||||||
{
|
{
|
||||||
GCMemcardCreateNewDialog dialog(this);
|
GCMemcardCreateNewDialog dialog(this);
|
||||||
if (dialog.exec() == QDialog::Accepted)
|
if (dialog.exec() == QDialog::Accepted)
|
||||||
@ -687,7 +700,7 @@ void GCMemcardManager::CreateNewCard(int slot)
|
|||||||
void GCMemcardManager::DrawIcons()
|
void GCMemcardManager::DrawIcons()
|
||||||
{
|
{
|
||||||
const int column = COLUMN_INDEX_ICON;
|
const int column = COLUMN_INDEX_ICON;
|
||||||
for (int slot = 0; slot < SLOT_COUNT; slot++)
|
for (Slot slot : MEMCARD_SLOTS)
|
||||||
{
|
{
|
||||||
QTableWidget* table = m_slot_table[slot];
|
QTableWidget* table = m_slot_table[slot];
|
||||||
const int row_count = table->rowCount();
|
const int row_count = table->rowCount();
|
||||||
@ -737,7 +750,7 @@ void GCMemcardManager::DrawIcons()
|
|||||||
++m_current_frame;
|
++m_current_frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPixmap GCMemcardManager::GetBannerFromSaveFile(int file_index, int slot)
|
QPixmap GCMemcardManager::GetBannerFromSaveFile(int file_index, Slot slot)
|
||||||
{
|
{
|
||||||
auto& memcard = m_slot_memcard[slot];
|
auto& memcard = m_slot_memcard[slot];
|
||||||
|
|
||||||
@ -753,7 +766,7 @@ QPixmap GCMemcardManager::GetBannerFromSaveFile(int file_index, int slot)
|
|||||||
return QPixmap::fromImage(image);
|
return QPixmap::fromImage(image);
|
||||||
}
|
}
|
||||||
|
|
||||||
GCMemcardManager::IconAnimationData GCMemcardManager::GetIconFromSaveFile(int file_index, int slot)
|
GCMemcardManager::IconAnimationData GCMemcardManager::GetIconFromSaveFile(int file_index, Slot slot)
|
||||||
{
|
{
|
||||||
auto& memcard = m_slot_memcard[slot];
|
auto& memcard = m_slot_memcard[slot];
|
||||||
|
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
|
||||||
#include "Common/CommonTypes.h"
|
#include "Common/CommonTypes.h"
|
||||||
|
#include "Common/EnumMap.h"
|
||||||
|
#include "Core/HW/EXI/EXI.h"
|
||||||
|
|
||||||
namespace Memcard
|
namespace Memcard
|
||||||
{
|
{
|
||||||
@ -53,26 +55,26 @@ private:
|
|||||||
void LoadDefaultMemcards();
|
void LoadDefaultMemcards();
|
||||||
|
|
||||||
void UpdateActions();
|
void UpdateActions();
|
||||||
void UpdateSlotTable(int slot);
|
void UpdateSlotTable(ExpansionInterface::Slot slot);
|
||||||
void SetSlotFile(int slot, QString path);
|
void SetSlotFile(ExpansionInterface::Slot slot, QString path);
|
||||||
void SetSlotFileInteractive(int slot);
|
void SetSlotFileInteractive(ExpansionInterface::Slot slot);
|
||||||
void SetActiveSlot(int slot);
|
void SetActiveSlot(ExpansionInterface::Slot slot);
|
||||||
|
|
||||||
std::vector<u8> GetSelectedFileIndices();
|
std::vector<u8> GetSelectedFileIndices();
|
||||||
|
|
||||||
void ImportFiles(int slot, const std::vector<Memcard::Savefile>& savefiles);
|
void ImportFiles(ExpansionInterface::Slot slot, const std::vector<Memcard::Savefile>& savefiles);
|
||||||
|
|
||||||
void CopyFiles();
|
void CopyFiles();
|
||||||
void ImportFile();
|
void ImportFile();
|
||||||
void DeleteFiles();
|
void DeleteFiles();
|
||||||
void ExportFiles(Memcard::SavefileFormat format);
|
void ExportFiles(Memcard::SavefileFormat format);
|
||||||
void FixChecksums();
|
void FixChecksums();
|
||||||
void CreateNewCard(int slot);
|
void CreateNewCard(ExpansionInterface::Slot slot);
|
||||||
void DrawIcons();
|
void DrawIcons();
|
||||||
|
|
||||||
QPixmap GetBannerFromSaveFile(int file_index, int slot);
|
QPixmap GetBannerFromSaveFile(int file_index, ExpansionInterface::Slot slot);
|
||||||
|
|
||||||
IconAnimationData GetIconFromSaveFile(int file_index, int slot);
|
IconAnimationData GetIconFromSaveFile(int file_index, ExpansionInterface::Slot slot);
|
||||||
|
|
||||||
// Actions
|
// Actions
|
||||||
QPushButton* m_select_button;
|
QPushButton* m_select_button;
|
||||||
@ -87,17 +89,18 @@ private:
|
|||||||
QPushButton* m_fix_checksums_button;
|
QPushButton* m_fix_checksums_button;
|
||||||
|
|
||||||
// Slots
|
// Slots
|
||||||
static constexpr int SLOT_COUNT = 2;
|
Common::EnumMap<std::map<u8, IconAnimationData>, ExpansionInterface::MAX_MEMCARD_SLOT>
|
||||||
std::array<std::map<u8, IconAnimationData>, SLOT_COUNT> m_slot_active_icons;
|
m_slot_active_icons;
|
||||||
std::array<std::unique_ptr<Memcard::GCMemcard>, SLOT_COUNT> m_slot_memcard;
|
Common::EnumMap<std::unique_ptr<Memcard::GCMemcard>, ExpansionInterface::MAX_MEMCARD_SLOT>
|
||||||
std::array<QGroupBox*, SLOT_COUNT> m_slot_group;
|
m_slot_memcard;
|
||||||
std::array<QLineEdit*, SLOT_COUNT> m_slot_file_edit;
|
Common::EnumMap<QGroupBox*, ExpansionInterface::MAX_MEMCARD_SLOT> m_slot_group;
|
||||||
std::array<QPushButton*, SLOT_COUNT> m_slot_open_button;
|
Common::EnumMap<QLineEdit*, ExpansionInterface::MAX_MEMCARD_SLOT> m_slot_file_edit;
|
||||||
std::array<QPushButton*, SLOT_COUNT> m_slot_create_button;
|
Common::EnumMap<QPushButton*, ExpansionInterface::MAX_MEMCARD_SLOT> m_slot_open_button;
|
||||||
std::array<QTableWidget*, SLOT_COUNT> m_slot_table;
|
Common::EnumMap<QPushButton*, ExpansionInterface::MAX_MEMCARD_SLOT> m_slot_create_button;
|
||||||
std::array<QLabel*, SLOT_COUNT> m_slot_stat_label;
|
Common::EnumMap<QTableWidget*, ExpansionInterface::MAX_MEMCARD_SLOT> m_slot_table;
|
||||||
|
Common::EnumMap<QLabel*, ExpansionInterface::MAX_MEMCARD_SLOT> m_slot_stat_label;
|
||||||
|
|
||||||
int m_active_slot;
|
ExpansionInterface::Slot m_active_slot;
|
||||||
u64 m_current_frame = 0;
|
u64 m_current_frame = 0;
|
||||||
|
|
||||||
QDialogButtonBox* m_button_box;
|
QDialogButtonBox* m_button_box;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user