9c6727e27f
Previously, we used a unique_ptr to a ModDownloadTask to keep track of the selected mod to download when we accepted the dialog. In order to allow multiple mods to be selected at once for download, this has been changed to a QHash where the key is the mods name (since it doesn't seem right to allow for multiple versions of the same mod to be downloaded at once), and the value is a pointer to the corresponding ModDownloadTask.
57 lines
1.4 KiB
C++
57 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include <QDialog>
|
|
#include <QVBoxLayout>
|
|
|
|
#include "BaseVersion.h"
|
|
#include "ui/pages/BasePageProvider.h"
|
|
#include "minecraft/mod/ModFolderModel.h"
|
|
#include "ModDownloadTask.h"
|
|
#include "ui/pages/modplatform/flame/FlameModPage.h"
|
|
|
|
namespace Ui
|
|
{
|
|
class ModDownloadDialog;
|
|
}
|
|
|
|
class PageContainer;
|
|
class QDialogButtonBox;
|
|
class ModrinthPage;
|
|
|
|
class ModDownloadDialog : public QDialog, public BasePageProvider
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit ModDownloadDialog(const std::shared_ptr<ModFolderModel> &mods, QWidget *parent, BaseInstance *instance);
|
|
~ModDownloadDialog();
|
|
|
|
QString dialogTitle() override;
|
|
QList<BasePage *> getPages() override;
|
|
|
|
void addSelectedMod(const QString & name = QString(), ModDownloadTask * task = nullptr);
|
|
void removeSelectedMod(const QString & name = QString());
|
|
bool isModSelected(const QString & name, const QString & filename) const;
|
|
|
|
const QList<ModDownloadTask*> getTasks();
|
|
const std::shared_ptr<ModFolderModel> &mods;
|
|
|
|
public slots:
|
|
void accept() override;
|
|
void reject() override;
|
|
|
|
//private slots:
|
|
|
|
private:
|
|
Ui::ModDownloadDialog *ui = nullptr;
|
|
PageContainer * m_container = nullptr;
|
|
QDialogButtonBox * m_buttons = nullptr;
|
|
QVBoxLayout *m_verticalLayout = nullptr;
|
|
|
|
|
|
ModrinthPage *modrinthPage = nullptr;
|
|
FlameModPage *flameModPage = nullptr;
|
|
QHash<QString, ModDownloadTask*> modTask;
|
|
BaseInstance *m_instance;
|
|
};
|