|
9 | 9 | #include <QDebug>
|
10 | 10 | #include <QTimer>
|
11 | 11 | #include <QAbstractItemModel>
|
| 12 | +#include <QLineEdit> |
| 13 | +#include <QCompleter> |
12 | 14 |
|
13 | 15 | #include "titlebar.h"
|
| 16 | +#include "propertydefs.h" |
14 | 17 |
|
15 | 18 | #include <utils/widgetutils.h>
|
16 | 19 | #include <utils/iconutils.h>
|
@@ -57,6 +60,18 @@ void TagExplorer::setupUI()
|
57 | 60 | setupTitleBar(this);
|
58 | 61 | mainLayout->addWidget(m_titleBar);
|
59 | 62 |
|
| 63 | + m_tagSearchEdit = WidgetsFactory::createComboBox(this); |
| 64 | + m_tagSearchEdit->setEditable(true); |
| 65 | + m_tagSearchEdit->setLineEdit(WidgetsFactory::createLineEdit(this)); |
| 66 | + m_tagSearchEdit->lineEdit()->setProperty(PropertyDefs::c_embeddedLineEdit, true); |
| 67 | + m_tagSearchEdit->lineEdit()->setPlaceholderText(tr("")); |
| 68 | + m_tagSearchEdit->lineEdit()->setClearButtonEnabled(true); |
| 69 | + m_tagSearchEdit->completer()->setCaseSensitivity(Qt::CaseSensitive); |
| 70 | + |
| 71 | + connect(m_tagSearchEdit->lineEdit(), &QLineEdit::textChanged, this, &TagExplorer::filterTags); |
| 72 | + |
| 73 | + mainLayout->addWidget(m_tagSearchEdit); |
| 74 | + |
60 | 75 | m_splitter = new QSplitter(this);
|
61 | 76 | mainLayout->addWidget(m_splitter);
|
62 | 77 |
|
@@ -531,3 +546,23 @@ void TagExplorer::scrollToTag(const QString &p_name)
|
531 | 546 | m_tagTree->scrollToItem(item);
|
532 | 547 | }
|
533 | 548 | }
|
| 549 | + |
| 550 | +void TagExplorer::filterTags(const QString &p_text) |
| 551 | +{ |
| 552 | + std::function<void(QTreeWidgetItem*)> processItem = [&](QTreeWidgetItem *p_item) { |
| 553 | + bool show = p_item->text(Column::Name).contains(p_text, Qt::CaseInsensitive); |
| 554 | + |
| 555 | + for (int i = 0; i < p_item->childCount(); ++i) { |
| 556 | + processItem(p_item->child(i)); |
| 557 | + if (!p_item->child(i)->isHidden()) { |
| 558 | + show = true; |
| 559 | + } |
| 560 | + } |
| 561 | + |
| 562 | + p_item->setHidden(!show); |
| 563 | + }; |
| 564 | + |
| 565 | + for (int i = 0; i < m_tagTree->topLevelItemCount(); ++i) { |
| 566 | + processItem(m_tagTree->topLevelItem(i)); |
| 567 | + } |
| 568 | +} |
0 commit comments