3cff23dae2
While implementing the resource pack downloader in another branch, I noticed that most of the code in the success callback was identical in both cases, safe for a few minute differences in strings. So, this tries to make it easier to share this piece of code. However, it still leaves the possibility of extending the methods in ResourceModel to accomodate for cases where this similarity may not hold. Signed-off-by: flow <flowlnlnln@gmail.com>
45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include <QAbstractListModel>
|
|
|
|
#include "modplatform/ModIndex.h"
|
|
#include "modplatform/ResourceAPI.h"
|
|
|
|
#include "ui/pages/modplatform/ResourceModel.h"
|
|
#include "ui/widgets/ModFilterWidget.h"
|
|
|
|
class Version;
|
|
|
|
namespace ResourceDownload {
|
|
|
|
class ModPage;
|
|
|
|
class ModModel : public ResourceModel {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
ModModel(const BaseInstance&, ResourceAPI* api);
|
|
|
|
/* Ask the API for more information */
|
|
void searchWithTerm(const QString& term, unsigned int sort, bool filter_changed);
|
|
|
|
void loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj) override = 0;
|
|
void loadExtraPackInfo(ModPlatform::IndexedPack& m, QJsonObject& obj) override = 0;
|
|
void loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) override = 0;
|
|
|
|
void setFilter(std::shared_ptr<ModFilterWidget::Filter> filter) { m_filter = filter; }
|
|
|
|
public slots:
|
|
ResourceAPI::SearchArgs createSearchArguments() override;
|
|
ResourceAPI::VersionSearchArgs createVersionsArguments(QModelIndex&) override;
|
|
ResourceAPI::ProjectInfoArgs createInfoArguments(QModelIndex&) override;
|
|
|
|
protected:
|
|
auto documentToArray(QJsonDocument& obj) const -> QJsonArray override = 0;
|
|
|
|
protected:
|
|
std::shared_ptr<ModFilterWidget::Filter> m_filter = nullptr;
|
|
};
|
|
|
|
} // namespace ResourceDownload
|