duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

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 };