diff options
author | flow <flowlnlnln@gmail.com> | 2022-12-29 13:04:38 -0300 |
---|---|---|
committer | flow <flowlnlnln@gmail.com> | 2022-12-29 13:21:49 -0300 |
commit | 141e94369ed88e7099b46b45a0ed3683cada6329 (patch) | |
tree | a2ff109e1491a82f73d67dc86dbd5bc65ac1008a | |
parent | 257970c27d262bd4b4dec4632f6370c5e04bc61b (diff) | |
download | PrismLauncher-141e94369ed88e7099b46b45a0ed3683cada6329.tar.gz PrismLauncher-141e94369ed88e7099b46b45a0ed3683cada6329.tar.bz2 PrismLauncher-141e94369ed88e7099b46b45a0ed3683cada6329.zip |
feat(Mods): hide 'Provider' column when no mods have providers
This makes the mod list look a bit less polluted in the common case of
mods having no provider whatsoever.
Signed-off-by: flow <flowlnlnln@gmail.com>
-rw-r--r-- | launcher/ui/widgets/ModListView.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/launcher/ui/widgets/ModListView.cpp b/launcher/ui/widgets/ModListView.cpp index c8ccd292..40d23f45 100644 --- a/launcher/ui/widgets/ModListView.cpp +++ b/launcher/ui/widgets/ModListView.cpp @@ -14,6 +14,9 @@ */ #include "ModListView.h" + +#include "minecraft/mod/ModFolderModel.h" + #include <QHeaderView> #include <QMouseEvent> #include <QPainter> @@ -63,4 +66,17 @@ void ModListView::setModel ( QAbstractItemModel* model ) for(int i = 1; i < head->count(); i++) head->setSectionResizeMode(i, QHeaderView::ResizeToContents); } + + auto real_model = model; + if (auto proxy_model = dynamic_cast<QSortFilterProxyModel*>(model); proxy_model) + real_model = proxy_model->sourceModel(); + + if (auto mod_model = dynamic_cast<ModFolderModel*>(real_model); mod_model) { + connect(mod_model, &ModFolderModel::updateFinished, this, [this, mod_model]{ + auto mods = mod_model->allMods(); + // Hide the 'Provider' column if no mod has a defined provider! + setColumnHidden(ModFolderModel::Columns::ProviderColumn, + std::none_of(mods.constBegin(), mods.constEnd(), [](auto const mod){ return mod->provider().has_value(); })); + }); + } } |