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>
This commit is contained in:
flow 2022-12-29 13:04:38 -03:00
parent 257970c27d
commit 141e94369e
No known key found for this signature in database
GPG Key ID: 8D0F221F0A59F469

View File

@ -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(); }));
});
}
}