feat(tab menu): functional search

This commit is contained in:
parker
2025-07-17 02:59:36 +01:00
parent 190bcea444
commit b99bcb73dc
2 changed files with 59 additions and 16 deletions

View File

@@ -34,10 +34,13 @@ enzo::ui::TabMenu::TabMenu(QWidget *parent, Qt::WindowFlags f)
nodeScrollArea_ = new QScrollArea();
nodeHolderLayout_ = new QVBoxLayout();
connect(searchBar_, &QLineEdit::textChanged, this, &TabMenu::textChanged);
auto tableItems = enzo::op::OperatorTable::getData();
for(auto tableItem : tableItems)
{
auto button = new TabMenuButton(tableItem.displayName.c_str());
buttons_.push_back(button);
button->nodeName = tableItem.internalName;
button->setFocusPolicy(Qt::NoFocus);
connect(button, &TabMenuButton::clicked, this, &enzo::ui::TabMenu::nodeClicked);
@@ -124,6 +127,27 @@ enzo::ui::TabMenu::TabMenu(QWidget *parent, Qt::WindowFlags f)
setDisabled(true);
}
void enzo::ui::TabMenu::textChanged(const QString &text)
{
for(auto button : buttons_)
{
if(text=="")
{
button->setVisible(true);
continue;
}
if(button->getDisplayText().toLower().contains(text.toLower()))
{
button->setVisible(true);
}
else
{
button->setVisible(false);
}
}
}
void enzo::ui::TabMenu::nodeClicked()
{
TabMenuButton* buttonClicked = static_cast<TabMenuButton*>(sender());
@@ -176,12 +200,12 @@ bool enzo::ui::TabMenu::event(QEvent *event)
focusOutEvent(static_cast<QFocusEvent*>(event));
return true;
}
std::cout << "key pressed: " << static_cast<QKeyEvent*>(event)->text().toStdString() << "\n";
}
else if(event->type() == QEvent::KeyRelease)
{
std::cout << "key release: " << static_cast<QKeyEvent*>(event)->text().toStdString() << "\n";
// std::cout << "key pressed: " << static_cast<QKeyEvent*>(event)->text().toStdString() << "\n";
}
// else if(event->type() == QEvent::KeyRelease)
// {
// std::cout << "key release: " << static_cast<QKeyEvent*>(event)->text().toStdString() << "\n";
// }
QApplication::sendEvent(searchBar_, clone);
return true;
}
@@ -193,6 +217,7 @@ enzo::ui::TabMenuButton::TabMenuButton(const QString &text, QWidget *parent)
: QPushButton(parent)
{
setObjectName("TabMenuButton");
displayText_ = text;
textLabel_ = new QLabel(text);
@@ -214,4 +239,8 @@ enzo::ui::TabMenuButton::TabMenuButton(const QString &text, QWidget *parent)
}
// enzo::ui::TabMenuSearch::TabMenuSearch(QWidget *parent)
// : QLineEdit(parent)
// {
// }

View File

@@ -1,5 +1,6 @@
#pragma once
#include <qcontainerfwd.h>
#include <qlineedit.h>
#include <QLabel>
#include <qpushbutton.h>
@@ -11,6 +12,21 @@
namespace enzo::ui
{
class TabMenuButton
: public QPushButton
{
public:
TabMenuButton(const QString &text, QWidget *parent = nullptr);
std::string nodeName;
QString getDisplayText() {return displayText_;}
private:
QHBoxLayout* mainLayout_;
QLabel* textLabel_;
QSvgWidget* icon_;
QString displayText_;
};
class TabMenu
: public QWidget
{
@@ -25,6 +41,8 @@ private:
QWidget* nodeHolder_;
QVBoxLayout* nodeHolderLayout_;
void doHide();
void textChanged(const QString &text);
std::vector<TabMenuButton*> buttons_;
protected:
void focusOutEvent(QFocusEvent *event) override;
bool event(QEvent *event) override;
@@ -33,16 +51,12 @@ protected slots:
void nodeClicked();
};
class TabMenuButton
: public QPushButton
{
public:
TabMenuButton(const QString &text, QWidget *parent = nullptr);
std::string nodeName;
private:
QHBoxLayout* mainLayout_;
QLabel* textLabel_;
QSvgWidget* icon_;
};
// class TabMenuSearch
// : public QLineEdit
// {
// TabMenuSearch(QWidget *parent = nullptr);
// };
}