refactor: move general code from mod model to its own model

This aims to continue decoupling other types of resources (e.g. resource
packs, shader packs, etc) from mods, so that we don't have to
continuously watch our backs for changes to one of them affecting the
others.

To do so, this creates a more general list model for resources, based on
the mods one, that allows you to extend it with functionality for other
resources.

I had to do some template and preprocessor stuff to get around the
QObject limitation of not allowing templated classes, so that's sadge :c

On the other hand, I tried cleaning up most general-purpose code in the
mod model, and added some documentation, because it looks nice :D

Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
flow
2022-08-09 01:58:22 -03:00
parent 3225f514f6
commit ec62d8e973
11 changed files with 779 additions and 456 deletions

View File

@ -32,12 +32,12 @@ class SortProxy : public QSortFilterProxyModel {
const auto& mod = model->at(source_row);
if (filterRegularExpression().match(mod.name()).hasMatch())
if (filterRegularExpression().match(mod->name()).hasMatch())
return true;
if (filterRegularExpression().match(mod.description()).hasMatch())
if (filterRegularExpression().match(mod->description()).hasMatch())
return true;
for (auto& author : mod.authors()) {
for (auto& author : mod->authors()) {
if (filterRegularExpression().match(author).hasMatch()) {
return true;
}
@ -292,6 +292,6 @@ void ExternalResourcesPage::current(const QModelIndex& current, const QModelInde
auto sourceCurrent = m_filterModel->mapToSource(current);
int row = sourceCurrent.row();
Mod& m = m_model->operator[](row);
Mod& m = *m_model->operator[](row);
ui->frame->updateWithMod(m);
}