aboutsummaryrefslogtreecommitdiffstats
path: root/gui/treemodel.cc
diff options
context:
space:
mode:
authorSergiusz Bazanski <q3k@q3k.org>2018-08-01 03:11:22 +0100
committerSergiusz Bazanski <q3k@q3k.org>2018-08-01 03:11:22 +0100
commit900649ce7a337dd7d3dcadf0d323302f09339325 (patch)
tree466a3a59906476cd0e76e07e962f9e61d1cc0890 /gui/treemodel.cc
parenta117fcdefd3ce22af04906a447b0f21d403489fa (diff)
downloadnextpnr-900649ce7a337dd7d3dcadf0d323302f09339325.tar.gz
nextpnr-900649ce7a337dd7d3dcadf0d323302f09339325.tar.bz2
nextpnr-900649ce7a337dd7d3dcadf0d323302f09339325.zip
gui: restore search
Diffstat (limited to 'gui/treemodel.cc')
-rw-r--r--gui/treemodel.cc36
1 files changed, 25 insertions, 11 deletions
diff --git a/gui/treemodel.cc b/gui/treemodel.cc
index eaf62928..4fc3d4f5 100644
--- a/gui/treemodel.cc
+++ b/gui/treemodel.cc
@@ -124,6 +124,17 @@ void IdStringList::updateElements(Context *ctx, std::vector<IdString> elements)
});
}
+void IdStringList::search(QList<Item*> &results, QString text, int limit)
+{
+ for (const auto &child : children_) {
+ if (limit != -1 && results.size() > limit)
+ return;
+
+ if (child->name().contains(text))
+ results.push_back(child);
+ }
+}
+
Model::Model(QObject *parent) :
QAbstractItemModel(parent),
@@ -272,17 +283,20 @@ bool Model::canFetchMore(const QModelIndex &parent) const
QList<QModelIndex> Model::search(QString text)
{
- QList<QModelIndex> list;
- //for (int i = 0; i < 6; i++) {
- // for (auto key : nameToItem[i].keys()) {
- // if (key.contains(text, Qt::CaseInsensitive)) {
- // list.append(indexFromNode(nameToItem[i].value(key)));
- // if (list.count() > 500)
- // break; // limit to 500 results
- // }
- // }
- //}
- return list;
+ const int limit = 500;
+
+ QList<Item*> list;
+ cell_root_->search(list, text, limit);
+ net_root_->search(list, text, limit);
+ bel_root_->search(list, text, limit);
+ wire_root_->search(list, text, limit);
+ pip_root_->search(list, text, limit);
+
+ QList<QModelIndex> res;
+ for (auto i : list) {
+ res.push_back(indexFromNode(i));
+ }
+ return res;
}
}; // namespace TreeModel