fixed shader packs detection

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2023-11-10 19:37:11 +02:00
parent 913d81e371
commit 463608b289
No known key found for this signature in database
GPG Key ID: 55EF5DA53DB36318
9 changed files with 42 additions and 16 deletions

View File

@ -283,7 +283,12 @@ void ResourceFolderModel::resolveResource(Resource* res)
connect( connect(
task.get(), &Task::failed, this, [=] { onParseFailed(ticket, res->internal_id()); }, Qt::ConnectionType::QueuedConnection); task.get(), &Task::failed, this, [=] { onParseFailed(ticket, res->internal_id()); }, Qt::ConnectionType::QueuedConnection);
connect( connect(
task.get(), &Task::finished, this, [=] { m_active_parse_tasks.remove(ticket); }, Qt::ConnectionType::QueuedConnection); task.get(), &Task::finished, this,
[=] {
m_active_parse_tasks.remove(ticket);
emit parseFinished();
},
Qt::ConnectionType::QueuedConnection);
m_helper_thread_task.addTask(task); m_helper_thread_task.addTask(task);
@ -630,3 +635,26 @@ QString ResourceFolderModel::instDirPath() const
{ {
return QFileInfo(m_instance->instanceRoot()).absoluteFilePath(); return QFileInfo(m_instance->instanceRoot()).absoluteFilePath();
} }
void ResourceFolderModel::onParseFailed(int ticket, QString resource_id)
{
auto iter = m_active_parse_tasks.constFind(ticket);
if (iter == m_active_parse_tasks.constEnd())
return;
auto removed_index = m_resources_index[resource_id];
auto removed_it = m_resources.begin() + removed_index;
Q_ASSERT(removed_it != m_resources.end());
beginRemoveRows(QModelIndex(), removed_index, removed_index);
m_resources.erase(removed_it);
// update index
m_resources_index.clear();
int idx = 0;
for (auto const& mod : qAsConst(m_resources)) {
m_resources_index[mod->internal_id()] = idx;
idx++;
}
endRemoveRows();
}

View File

@ -143,6 +143,7 @@ class ResourceFolderModel : public QAbstractListModel {
signals: signals:
void updateFinished(); void updateFinished();
void parseFinished();
protected: protected:
/** This creates a new update task to be executed by update(). /** This creates a new update task to be executed by update().
@ -189,11 +190,7 @@ class ResourceFolderModel : public QAbstractListModel {
* if the resource is complex and has more stuff to parse. * if the resource is complex and has more stuff to parse.
*/ */
virtual void onParseSucceeded(int ticket, QString resource_id); virtual void onParseSucceeded(int ticket, QString resource_id);
virtual void onParseFailed(int ticket, QString resource_id) virtual void onParseFailed(int ticket, QString resource_id);
{
Q_UNUSED(ticket);
Q_UNUSED(resource_id);
}
protected: protected:
// Represents the relationship between a column's index (represented by the list index), and it's sorting key. // Represents the relationship between a column's index (represented by the list index), and it's sorting key.

View File

@ -35,8 +35,3 @@ bool ShaderPack::valid() const
{ {
return m_pack_format != ShaderPackFormat::INVALID; return m_pack_format != ShaderPackFormat::INVALID;
} }
bool ShaderPack::applyFilter(QRegularExpression filter) const
{
return valid() && Resource::applyFilter(filter);
}

View File

@ -54,7 +54,6 @@ class ShaderPack : public Resource {
void setPackFormat(ShaderPackFormat new_format); void setPackFormat(ShaderPackFormat new_format);
bool valid() const override; bool valid() const override;
[[nodiscard]] bool applyFilter(QRegularExpression filter) const override;
protected: protected:
mutable QMutex m_data_lock; mutable QMutex m_data_lock;

View File

@ -746,7 +746,7 @@ void LocalModParseTask::executeTask()
m_result->details = mod.details(); m_result->details = mod.details();
if (m_aborted) if (m_aborted)
emit finished(); emitAborted();
else else
emitSucceeded(); emitSucceeded();
} }

View File

@ -286,8 +286,10 @@ bool LocalResourcePackParseTask::abort()
void LocalResourcePackParseTask::executeTask() void LocalResourcePackParseTask::executeTask()
{ {
if (!ResourcePackUtils::process(m_resource_pack)) if (!ResourcePackUtils::process(m_resource_pack)) {
emitFailed("this is not a resource pack");
return; return;
}
if (m_aborted) if (m_aborted)
emitAborted(); emitAborted();

View File

@ -103,8 +103,10 @@ bool LocalShaderPackParseTask::abort()
void LocalShaderPackParseTask::executeTask() void LocalShaderPackParseTask::executeTask()
{ {
if (!ShaderPackUtils::process(m_shader_pack)) if (!ShaderPackUtils::process(m_shader_pack)) {
emitFailed("this is not a shader pack");
return; return;
}
if (m_aborted) if (m_aborted)
emitAborted(); emitAborted();

View File

@ -241,8 +241,10 @@ bool LocalTexturePackParseTask::abort()
void LocalTexturePackParseTask::executeTask() void LocalTexturePackParseTask::executeTask()
{ {
if (!TexturePackUtils::process(m_texture_pack)) if (!TexturePackUtils::process(m_texture_pack)) {
emitFailed("this is not a texture pack");
return; return;
}
if (m_aborted) if (m_aborted)
emitAborted(); emitAborted();

View File

@ -87,6 +87,7 @@ ExternalResourcesPage::ExternalResourcesPage(BaseInstance* instance, std::shared
}; };
connect(selection_model, &QItemSelectionModel::selectionChanged, this, updateExtra); connect(selection_model, &QItemSelectionModel::selectionChanged, this, updateExtra);
connect(model.get(), &ResourceFolderModel::updateFinished, this, updateExtra); connect(model.get(), &ResourceFolderModel::updateFinished, this, updateExtra);
connect(model.get(), &ResourceFolderModel::parseFinished, this, updateExtra);
connect(ui->filterEdit, &QLineEdit::textChanged, this, &ExternalResourcesPage::filterTextChanged); connect(ui->filterEdit, &QLineEdit::textChanged, this, &ExternalResourcesPage::filterTextChanged);