Materials: External interface refinements (#21524)

This commit is contained in:
David Carter
2025-05-24 06:25:44 +00:00
committed by GitHub
parent 0ef4ee0367
commit 13b7991705
37 changed files with 1147 additions and 406 deletions

View File

@@ -45,7 +45,6 @@ TYPESYSTEM_SOURCE(Materials::MaterialLibrary, Base::BaseClass)
MaterialLibrary::MaterialLibrary(const QString& libraryName, const QString& icon, bool readOnly)
: Library(libraryName, icon, readOnly)
, _local(false)
{}
MaterialLibrary::MaterialLibrary(const QString& libraryName,
@@ -53,24 +52,12 @@ MaterialLibrary::MaterialLibrary(const QString& libraryName,
const QString& icon,
bool readOnly)
: Library(libraryName, dir, icon, readOnly)
, _local(false)
{}
MaterialLibrary::MaterialLibrary(const Library& library)
: Library(library)
, _local(false)
{}
bool MaterialLibrary::isLocal() const
{
return _local;
}
void MaterialLibrary::setLocal(bool local)
{
_local = local;
}
std::shared_ptr<std::map<QString, std::shared_ptr<MaterialTreeNode>>>
MaterialLibrary::getMaterialTree(const std::shared_ptr<Materials::MaterialFilter>& filter,
const Materials::MaterialFilterOptions& options) const
@@ -78,11 +65,11 @@ MaterialLibrary::getMaterialTree(const std::shared_ptr<Materials::MaterialFilter
std::shared_ptr<std::map<QString, std::shared_ptr<MaterialTreeNode>>> materialTree =
std::make_shared<std::map<QString, std::shared_ptr<MaterialTreeNode>>>();
auto materials = MaterialManager::getManager().libraryMaterials(getName(), filter, options);
auto materials = MaterialManager::getManager().libraryMaterials(getName(), filter, options, isLocal());
for (auto& it : *materials) {
auto uuid = std::get<0>(it);
auto path = std::get<1>(it);
auto filename = std::get<2>(it);
auto uuid = it.getUUID();
auto path = it.getPath();
auto filename = it.getName();
QStringList list = path.split(QStringLiteral("/"));
@@ -98,6 +85,7 @@ MaterialLibrary::getMaterialTree(const std::shared_ptr<Materials::MaterialFilter
std::shared_ptr<MaterialTreeNode> child =
std::make_shared<MaterialTreeNode>();
child->setFolder(mapPtr);
child->setReadOnly(isReadOnly());
(*node)[itp] = child;
node = mapPtr;
}
@@ -108,6 +96,11 @@ MaterialLibrary::getMaterialTree(const std::shared_ptr<Materials::MaterialFilter
}
std::shared_ptr<MaterialTreeNode> child = std::make_shared<MaterialTreeNode>();
child->setUUID(uuid);
child->setReadOnly(isReadOnly());
if (isLocal()) {
auto material = MaterialManager::getManager().getMaterial(uuid);
child->setOldFormat(material->isOldFormat());
}
(*node)[filename] = child;
}