Merge pull request #1827 from Trial97/shader

fixed shader packs detection
This commit is contained in:
Alexandru Ionut Tripon 2024-05-18 12:02:13 +03:00 committed by GitHub
commit c8ff768d64
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 42 additions and 16 deletions

View File

@ -284,7 +284,12 @@ void ResourceFolderModel::resolveResource(Resource* res)
connect(
task.get(), &Task::failed, this, [=] { onParseFailed(ticket, res->internal_id()); }, Qt::ConnectionType::QueuedConnection);
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);
@ -617,3 +622,26 @@ QString ResourceFolderModel::instDirPath() const
{
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:
void updateFinished();
void parseFinished();
protected:
/** 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.
*/
virtual void onParseSucceeded(int ticket, QString resource_id);
virtual void onParseFailed(int ticket, QString resource_id)
{
Q_UNUSED(ticket);
Q_UNUSED(resource_id);
}
virtual void onParseFailed(int ticket, QString resource_id);
protected:
// 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;
}
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);
bool valid() const override;
[[nodiscard]] bool applyFilter(QRegularExpression filter) const override;
protected:
mutable QMutex m_data_lock;

View File

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

View File

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

View File

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

View File

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

View File

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