##// END OF EJS Templates
Parser refactoring (3)...
Parser refactoring (3) Implements properties reading and properties checking Implementation takes some of the basic parser, which will be deleted at the end

File last commit:

r476:becb718e8802
r987:49134789d5f3
Show More
DataSourceTreeWidgetHelper.cpp
36 lines | 1.0 KiB | text/x-c | CppLexer
/ gui / src / DataSource / DataSourceTreeWidgetHelper.cpp
Alexandre Leroux
Creates helper that filters a tree widget according to a filter function
r476 #include "DataSource/DataSourceTreeWidgetHelper.h"
#include "DataSource/DataSourceTreeWidgetItem.h"
namespace {
bool filterTreeItem(DataSourceTreeWidgetItem &treeItem,
DataSourceTreeWidgetHelper::FilterFunction fun, bool parentValid = false)
{
auto selfValid = parentValid || fun(treeItem);
auto childValid = false;
auto childCount = treeItem.childCount();
for (auto i = 0; i < childCount; ++i) {
if (auto childItem = dynamic_cast<DataSourceTreeWidgetItem *>(treeItem.child(i))) {
childValid |= filterTreeItem(*childItem, fun, selfValid);
}
}
auto valid = selfValid || childValid;
treeItem.setHidden(!valid);
return valid;
}
} // namespace
void DataSourceTreeWidgetHelper::filter(QTreeWidget &treeWidget, FilterFunction fun) noexcept
{
auto itemCount = treeWidget.topLevelItemCount();
for (auto i = 0; i < itemCount; ++i) {
if (auto item = dynamic_cast<DataSourceTreeWidgetItem *>(treeWidget.topLevelItem(i))) {
filterTreeItem(*item, fun);
}
}
}