fix(ui): Refresh mod list when changing filtering options
This commit is contained in:
parent
c730fd6e5f
commit
5cb0e75093
@ -61,10 +61,9 @@ class ModAPI {
|
|||||||
{
|
{
|
||||||
QString s;
|
QString s;
|
||||||
for(auto& ver : mcVersions){
|
for(auto& ver : mcVersions){
|
||||||
s += ver.toString();
|
s += QString("%1,").arg(ver.toString());
|
||||||
if(ver != mcVersions.back())
|
|
||||||
s += ",";
|
|
||||||
}
|
}
|
||||||
|
s.remove(s.length() - 1, 1); //remove last comma
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -22,12 +22,12 @@ class ModrinthAPI : public NetworkModAPI {
|
|||||||
"limit=25&"
|
"limit=25&"
|
||||||
"query=%2&"
|
"query=%2&"
|
||||||
"index=%3&"
|
"index=%3&"
|
||||||
"facets=[[\"categories:%4\"],[\"versions:%5\"],[\"project_type:mod\"]]")
|
"facets=[[\"categories:%4\"],[%5],[\"project_type:mod\"]]")
|
||||||
.arg(args.offset)
|
.arg(args.offset)
|
||||||
.arg(args.search)
|
.arg(args.search)
|
||||||
.arg(args.sorting)
|
.arg(args.sorting)
|
||||||
.arg(getModLoaderString(args.mod_loader))
|
.arg(getModLoaderString(args.mod_loader))
|
||||||
.arg(getGameVersionsString(args.versions));
|
.arg(getGameVersionsArray(args.versions));
|
||||||
};
|
};
|
||||||
|
|
||||||
inline auto getVersionsURL(VersionSearchArgs& args) const -> QString override
|
inline auto getVersionsURL(VersionSearchArgs& args) const -> QString override
|
||||||
@ -40,6 +40,16 @@ class ModrinthAPI : public NetworkModAPI {
|
|||||||
.arg(getModLoaderString(args.loader));
|
.arg(getModLoaderString(args.loader));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
auto getGameVersionsArray(std::list<Version> mcVersions) const -> QString
|
||||||
|
{
|
||||||
|
QString s;
|
||||||
|
for(auto& ver : mcVersions){
|
||||||
|
s += QString("\"versions:%1\",").arg(ver.toString());
|
||||||
|
}
|
||||||
|
s.remove(s.length() - 1, 1); //remove last comma
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
static auto getModLoaderString(ModLoaderType type) -> const QString
|
static auto getModLoaderString(ModLoaderType type) -> const QString
|
||||||
{
|
{
|
||||||
if (type == Unspecified)
|
if (type == Unspecified)
|
||||||
|
@ -75,11 +75,8 @@ void ListModel::performPaginatedSearch()
|
|||||||
{ nextSearchOffset, currentSearchTerm, getSorts()[currentSort], profile->getModLoader(), getMineVersions() });
|
{ nextSearchOffset, currentSearchTerm, getSorts()[currentSort], profile->getModLoader(), getMineVersions() });
|
||||||
}
|
}
|
||||||
|
|
||||||
void ListModel::searchWithTerm(const QString& term, const int sort)
|
void ListModel::refresh()
|
||||||
{
|
{
|
||||||
if (currentSearchTerm == term && currentSearchTerm.isNull() == term.isNull() && currentSort == sort) { return; }
|
|
||||||
currentSearchTerm = term;
|
|
||||||
currentSort = sort;
|
|
||||||
if (jobPtr) {
|
if (jobPtr) {
|
||||||
jobPtr->abort();
|
jobPtr->abort();
|
||||||
searchState = ResetRequested;
|
searchState = ResetRequested;
|
||||||
@ -94,6 +91,15 @@ void ListModel::searchWithTerm(const QString& term, const int sort)
|
|||||||
performPaginatedSearch();
|
performPaginatedSearch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ListModel::searchWithTerm(const QString& term, const int sort)
|
||||||
|
{
|
||||||
|
if (currentSearchTerm == term && currentSearchTerm.isNull() == term.isNull() && currentSort == sort) { return; }
|
||||||
|
currentSearchTerm = term;
|
||||||
|
currentSort = sort;
|
||||||
|
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
void ListModel::getLogo(const QString& logo, const QString& logoUrl, LogoCallback callback)
|
void ListModel::getLogo(const QString& logo, const QString& logoUrl, LogoCallback callback)
|
||||||
{
|
{
|
||||||
if (m_logoMap.contains(logo)) {
|
if (m_logoMap.contains(logo)) {
|
||||||
|
@ -34,6 +34,7 @@ class ListModel : public QAbstractListModel {
|
|||||||
|
|
||||||
/* Ask the API for more information */
|
/* Ask the API for more information */
|
||||||
void fetchMore(const QModelIndex& parent) override;
|
void fetchMore(const QModelIndex& parent) override;
|
||||||
|
void refresh();
|
||||||
void searchWithTerm(const QString& term, const int sort);
|
void searchWithTerm(const QString& term, const int sort);
|
||||||
void requestModVersions(const ModPlatform::IndexedPack& current);
|
void requestModVersions(const ModPlatform::IndexedPack& current);
|
||||||
|
|
||||||
|
@ -62,6 +62,13 @@ void ModPage::filterMods()
|
|||||||
filter_dialog.execWithInstance(static_cast<MinecraftInstance*>(m_instance));
|
filter_dialog.execWithInstance(static_cast<MinecraftInstance*>(m_instance));
|
||||||
|
|
||||||
m_filter = filter_dialog.getFilter();
|
m_filter = filter_dialog.getFilter();
|
||||||
|
|
||||||
|
listModel->refresh();
|
||||||
|
|
||||||
|
if(ui->versionSelectionBox->count() > 0){
|
||||||
|
ui->versionSelectionBox->clear();
|
||||||
|
updateModVersions();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModPage::triggerSearch()
|
void ModPage::triggerSearch()
|
||||||
|
Loading…
Reference in New Issue
Block a user