refactor: use only a single unique_ptr for the api
This commit is contained in:
		| @@ -5,8 +5,8 @@ | ||||
|  | ||||
| #include "ui/dialogs/ModDownloadDialog.h" | ||||
|  | ||||
| ModPage::ModPage(ModDownloadDialog* dialog, BaseInstance* instance) | ||||
|     : QWidget(dialog), m_instance(instance), ui(new Ui::ModPage), dialog(dialog) | ||||
| ModPage::ModPage(ModDownloadDialog* dialog, BaseInstance* instance, ModAPI* api) | ||||
|     : QWidget(dialog), m_instance(instance), ui(new Ui::ModPage), dialog(dialog), api(api) | ||||
| { | ||||
|     ui->setupUi(this); | ||||
|     connect(ui->searchButton, &QPushButton::clicked, this, &ModPage::triggerSearch); | ||||
|   | ||||
| @@ -15,23 +15,27 @@ namespace Ui { | ||||
| class ModPage; | ||||
| } | ||||
|  | ||||
| /* This page handles most logic related to browsing and selecting mods to download. | ||||
|  * By default, the methods provided work with net requests, to fetch data from remote APIs. */ | ||||
| class ModPage : public QWidget, public BasePage { | ||||
|     Q_OBJECT | ||||
|  | ||||
|    public: | ||||
|     explicit ModPage(ModDownloadDialog* dialog, BaseInstance* instance); | ||||
|     explicit ModPage(ModDownloadDialog* dialog, BaseInstance* instance, ModAPI* api); | ||||
|     virtual ~ModPage(); | ||||
|  | ||||
|     /* The name visible to the user */ | ||||
|     virtual QString displayName() const override = 0; | ||||
|     virtual QIcon icon() const override = 0; | ||||
|     virtual QString id() const override = 0; | ||||
|     virtual QString helpPage() const override = 0; | ||||
|  | ||||
|     virtual QString debugName() const = 0; | ||||
|     virtual QString metaEntryBase() const = 0; | ||||
|     /* This only appears in the debug console */ | ||||
|     virtual QString debugName() const = 0; | ||||
|  | ||||
|     virtual bool shouldDisplay() const override = 0; | ||||
|     virtual const ModAPI* apiProvider() const = 0; | ||||
|     const ModAPI* apiProvider() const { return api.get(); }; | ||||
|  | ||||
|     void openedImpl() override; | ||||
|     bool eventFilter(QObject* watched, QEvent* event) override; | ||||
| @@ -55,5 +59,7 @@ class ModPage : public QWidget, public BasePage { | ||||
|     ModPlatform::ListModel* listModel = nullptr; | ||||
|     ModPlatform::IndexedPack current; | ||||
|  | ||||
|     std::unique_ptr<ModAPI> api; | ||||
|  | ||||
|     int selectedVersion = -1; | ||||
| }; | ||||
|   | ||||
| @@ -13,7 +13,7 @@ | ||||
| #include "ui/dialogs/ModDownloadDialog.h" | ||||
|  | ||||
| FlameModPage::FlameModPage(ModDownloadDialog* dialog, BaseInstance* instance)  | ||||
|     : ModPage(dialog, instance) | ||||
|     : ModPage(dialog, instance, new FlameAPI()) | ||||
| { | ||||
|     listModel = new FlameMod::ListModel(this); | ||||
|     ui->packView->setModel(listModel); | ||||
|   | ||||
| @@ -20,11 +20,7 @@ class FlameModPage : public ModPage { | ||||
|     inline QString metaEntryBase() const override { return "FlameMods"; }; | ||||
|  | ||||
|     bool shouldDisplay() const override; | ||||
|     const ModAPI* apiProvider() const override { return &api; }; | ||||
|  | ||||
|    private: | ||||
|     void onModVersionSucceed(ModPage*, QByteArray*, QString) override; | ||||
|  | ||||
|    private: | ||||
|     FlameAPI api; | ||||
| }; | ||||
|   | ||||
| @@ -13,7 +13,7 @@ | ||||
| #include "ui/dialogs/ModDownloadDialog.h" | ||||
|  | ||||
| ModrinthPage::ModrinthPage(ModDownloadDialog* dialog, BaseInstance* instance) | ||||
|     : ModPage(dialog, instance) | ||||
|     : ModPage(dialog, instance, new ModrinthAPI()) | ||||
| { | ||||
|     listModel = new Modrinth::ListModel(this); | ||||
|     ui->packView->setModel(listModel); | ||||
|   | ||||
| @@ -20,11 +20,7 @@ class ModrinthPage : public ModPage { | ||||
|     inline QString metaEntryBase() const override { return "ModrinthPacks"; }; | ||||
|  | ||||
|     bool shouldDisplay() const override; | ||||
|     const ModAPI* apiProvider() const override { return &api; }; | ||||
|  | ||||
|    private: | ||||
|     void onModVersionSucceed(ModPage*, QByteArray*, QString) override; | ||||
|  | ||||
|    private: | ||||
|     ModrinthAPI api; | ||||
| }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user