aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/pages
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/ui/pages')
-rw-r--r--launcher/ui/pages/modplatform/ModPage.cpp5
-rw-r--r--launcher/ui/pages/modplatform/ModPage.h2
-rw-r--r--launcher/ui/pages/modplatform/flame/FlameModPage.cpp19
-rw-r--r--launcher/ui/pages/modplatform/flame/FlameModPage.h2
4 files changed, 24 insertions, 4 deletions
diff --git a/launcher/ui/pages/modplatform/ModPage.cpp b/launcher/ui/pages/modplatform/ModPage.cpp
index ece97ef2..ba56c3b8 100644
--- a/launcher/ui/pages/modplatform/ModPage.cpp
+++ b/launcher/ui/pages/modplatform/ModPage.cpp
@@ -64,7 +64,6 @@ void ModPage::filterMods()
m_filter = filter_dialog.getFilter();
listModel->refresh();
-
if(ui->versionSelectionBox->count() > 0){
ui->versionSelectionBox->clear();
updateModVersions();
@@ -164,14 +163,14 @@ void ModPage::updateModVersions()
for (int i = 0; i < current.versions.size(); i++) {
auto version = current.versions[i];
bool valid = false;
- //NOTE: Flame doesn't care about loaderString, so passing it changes nothing.
for(auto& mcVer : m_filter->versions){
+ //NOTE: Flame doesn't care about loaderString, so passing it changes nothing.
if (validateVersion(version, mcVer.toString(), loaderString)) {
valid = true;
break;
}
}
- if(valid)
+ if(valid || m_filter->versions.size() == 0)
ui->versionSelectionBox->addItem(version.version, QVariant(i));
}
if (ui->versionSelectionBox->count() == 0) { ui->versionSelectionBox->addItem(tr("No valid version found!"), QVariant(-1)); }
diff --git a/launcher/ui/pages/modplatform/ModPage.h b/launcher/ui/pages/modplatform/ModPage.h
index 3c71e6fe..0befc7c3 100644
--- a/launcher/ui/pages/modplatform/ModPage.h
+++ b/launcher/ui/pages/modplatform/ModPage.h
@@ -54,7 +54,7 @@ class ModPage : public QWidget, public BasePage {
void updateSelectionButton();
protected slots:
- void filterMods();
+ virtual void filterMods();
void triggerSearch();
void onSelectionChanged(QModelIndex first, QModelIndex second);
void onVersionSelectionChanged(QString data);
diff --git a/launcher/ui/pages/modplatform/flame/FlameModPage.cpp b/launcher/ui/pages/modplatform/flame/FlameModPage.cpp
index 864ae8e6..5398bda3 100644
--- a/launcher/ui/pages/modplatform/flame/FlameModPage.cpp
+++ b/launcher/ui/pages/modplatform/flame/FlameModPage.cpp
@@ -67,6 +67,25 @@ auto FlameModPage::validateVersion(ModPlatform::IndexedVersion& ver, QString min
return ver.mcVersion.contains(mineVer);
}
+// We override this so that it refreshes correctly, otherwise it wouldn't show
+// any mod on the mod list, because the CF API does not support it :(
+void FlameModPage::filterMods()
+{
+ filter_dialog.execWithInstance(static_cast<MinecraftInstance*>(m_instance));
+
+ int prev_size = m_filter->versions.size();
+ m_filter = filter_dialog.getFilter();
+ int new_size = m_filter->versions.size();
+
+ if(new_size <= 1 && new_size != prev_size)
+ listModel->refresh();
+
+ if(ui->versionSelectionBox->count() > 0){
+ ui->versionSelectionBox->clear();
+ updateModVersions();
+ }
+}
+
// I don't know why, but doing this on the parent class makes it so that
// other mod providers start loading before being selected, at least with
// my Qt, so we need to implement this in every derived class...
diff --git a/launcher/ui/pages/modplatform/flame/FlameModPage.h b/launcher/ui/pages/modplatform/flame/FlameModPage.h
index dc58fd7f..7078e889 100644
--- a/launcher/ui/pages/modplatform/flame/FlameModPage.h
+++ b/launcher/ui/pages/modplatform/flame/FlameModPage.h
@@ -56,5 +56,7 @@ class FlameModPage : public ModPage {
auto validateVersion(ModPlatform::IndexedVersion& ver, QString mineVer, QString loaderVer = "") const -> bool override;
+ void filterMods() override;
+
auto shouldDisplay() const -> bool override;
};