#pragma once #include "core/memory_card_image.h" #include "ui_memorycardeditordialog.h" #include #include #include #include #include class MemoryCardEditorDialog : public QDialog { Q_OBJECT public: MemoryCardEditorDialog(QWidget* parent); ~MemoryCardEditorDialog(); bool setCardA(const QString& path); bool setCardB(const QString& path); static bool createMemoryCard(const QString& path); protected: void resizeEvent(QResizeEvent* ev); void closeEvent(QCloseEvent* ev); private Q_SLOTS: void onCardASelectionChanged(); void onCardBSelectionChanged(); void doCopyFile(); void doDeleteFile(); void doUndeleteFile(); private: struct Card { std::string filename; MemoryCardImage::DataArray data; std::vector 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 openCard(Card* card); void saveCard(Card* card); void promptForSave(Card* card); void importCard(Card* card); void formatCard(Card* card); void doExportSaveFile(); void importSaveFile(Card* card); std::tuple getSelectedFile(); void updateButtonState(); Ui::MemoryCardEditorDialog m_ui; Card m_card_a; Card m_card_b; };