folder: revise child exists to find child function

This commit is contained in:
itsmattkc
2022-12-08 11:25:31 -08:00
parent b99d1e5797
commit af76fbf0e1
2 changed files with 13 additions and 11 deletions
+8 -10
View File
@@ -49,28 +49,26 @@ void Folder::Retranslate()
SetInputName(kChildInput, tr("Children")); SetInputName(kChildInput, tr("Children"));
} }
bool ChildExistsWithNameInternal(const Folder* n, const QString& s) Node *GetChildWithNameInternal(const Folder* n, const QString& s)
{ {
for (int i=0; i<n->item_child_count(); i++) { for (int i=0; i<n->item_child_count(); i++) {
Node* child = n->item_child(i); Node* child = n->item_child(i);
if (child->GetLabel() == s) { if (child->GetLabel() == s) {
return true; return child;
} else { } else if (Folder* subfolder = dynamic_cast<Folder*>(child)) {
Folder* subfolder = dynamic_cast<Folder*>(child); if (Node *n2 = GetChildWithNameInternal(subfolder, s)) {
return n2;
if (subfolder && ChildExistsWithNameInternal(subfolder, s)) {
return true;
} }
} }
} }
return false; return nullptr;
} }
bool Folder::ChildExistsWithName(const QString &s) const Node *Folder::GetChildWithName(const QString &s) const
{ {
return ChildExistsWithNameInternal(this, s); return GetChildWithNameInternal(this, s);
} }
bool Folder::HasChildRecursive(Node *child) const bool Folder::HasChildRecursive(Node *child) const
+5 -1
View File
@@ -63,7 +63,11 @@ public:
virtual void Retranslate() override; virtual void Retranslate() override;
bool ChildExistsWithName(const QString& s) const; Node *GetChildWithName(const QString& s) const;
bool ChildExistsWithName(const QString& s) const
{
return GetChildWithName(s);
}
bool HasChildRecursive(Node *child) const; bool HasChildRecursive(Node *child) const;