Qt: Add memory card editor

This commit is contained in:
Connor McLaughlin
2020-09-19 00:28:07 +10:00
parent 92da9917a8
commit 238152ae88
9 changed files with 812 additions and 33 deletions

View File

@ -0,0 +1,63 @@
#pragma once
#include "core/memory_card_image.h"
#include "ui_memorycardeditordialog.h"
#include <QtWidgets/QComboBox>
#include <QtWidgets/QDialog>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QTableWidget>
class MemoryCardEditorDialog : public QDialog
{
Q_OBJECT
public:
MemoryCardEditorDialog(QWidget* parent);
~MemoryCardEditorDialog();
protected:
void resizeEvent(QResizeEvent* ev);
void closeEvent(QCloseEvent* ev);
private Q_SLOTS:
void onCardASelectionChanged();
void onCardBSelectionChanged();
void doCopyFile();
void doDeleteFile();
private:
struct Card
{
std::string filename;
MemoryCardImage::DataArray data;
std::vector<MemoryCardImage::FileInfo> files;
u32 blocks_free = 0;
bool dirty = false;
QComboBox* path_cb = nullptr;
QTableWidget* table = nullptr;
QLabel* blocks_free_label = nullptr;
QPushButton* save_button = nullptr;
};
void connectUi();
void populateComboBox(QComboBox* cb);
void clearSelection();
void loadCardFromComboBox(Card* card, int index);
bool loadCard(const QString& filename, Card* card);
void updateCardTable(Card* card);
void updateCardBlocksFree(Card* card);
void setCardDirty(Card* card);
void newCard(Card* card);
void saveCard(Card* card);
void promptForSave(Card* card);
void importCard(Card* card);
std::tuple<Card*, const MemoryCardImage::FileInfo*> getSelectedFile();
void updateButtonState();
Ui::MemoryCardEditorDialog m_ui;
Card m_card_a;
Card m_card_b;
};