memorycardeditorwindow.h (2418B)
1 // SPDX-FileCopyrightText: 2019-2023 Connor McLaughlin <stenzek@gmail.com> 2 // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0) 3 4 #pragma once 5 6 #include "ui_memorycardeditorwindow.h" 7 8 #include "core/memory_card_image.h" 9 10 #include <QtWidgets/QComboBox> 11 #include <QtWidgets/QDialog> 12 #include <QtWidgets/QDialogButtonBox> 13 #include <QtWidgets/QLabel> 14 #include <QtWidgets/QPushButton> 15 #include <QtWidgets/QTableWidget> 16 17 class Error; 18 19 class MemoryCardEditorWindow : public QWidget 20 { 21 Q_OBJECT 22 23 public: 24 MemoryCardEditorWindow(); 25 ~MemoryCardEditorWindow(); 26 27 bool setCardA(const QString& path); 28 bool setCardB(const QString& path); 29 30 static bool createMemoryCard(const QString& path, Error* error); 31 32 protected: 33 void resizeEvent(QResizeEvent* ev); 34 void closeEvent(QCloseEvent* ev); 35 36 private Q_SLOTS: 37 void onCardASelectionChanged(); 38 void onCardBSelectionChanged(); 39 void doCopyFile(); 40 void doDeleteFile(); 41 void doUndeleteFile(); 42 43 private: 44 struct Card 45 { 46 std::string filename; 47 MemoryCardImage::DataArray data; 48 std::vector<MemoryCardImage::FileInfo> files; 49 u32 blocks_free = 0; 50 bool dirty = false; 51 52 QComboBox* path_cb = nullptr; 53 QTableWidget* table = nullptr; 54 QLabel* blocks_free_label = nullptr; 55 QPushButton* save_button = nullptr; 56 QPushButton* import_button = nullptr; 57 QPushButton* import_file_button = nullptr; 58 QPushButton* format_button = nullptr; 59 }; 60 61 void createCardButtons(Card* card, QDialogButtonBox* buttonBox); 62 void connectCardUi(Card* card, QDialogButtonBox* buttonBox); 63 64 void connectUi(); 65 void populateComboBox(QComboBox* cb); 66 void clearSelection(); 67 void loadCardFromComboBox(Card* card, int index); 68 bool loadCard(const QString& filename, Card* card); 69 void updateCardTable(Card* card); 70 void updateCardBlocksFree(Card* card); 71 void setCardDirty(Card* card); 72 void newCard(Card* card); 73 void openCard(Card* card); 74 void saveCard(Card* card); 75 void promptForSave(Card* card); 76 void importCard(Card* card); 77 void formatCard(Card* card); 78 79 void doExportSaveFile(); 80 void importSaveFile(Card* card); 81 82 std::tuple<Card*, const MemoryCardImage::FileInfo*> getSelectedFile(); 83 void updateButtonState(); 84 85 Ui::MemoryCardEditorDialog m_ui; 86 QPushButton* m_deleteFile; 87 QPushButton* m_undeleteFile; 88 QPushButton* m_exportFile; 89 QPushButton* m_moveLeft; 90 QPushButton* m_moveRight; 91 92 Card m_card_a; 93 Card m_card_b; 94 };