From b99bcb73dc32c0d0fdc240fc23e5af4a52a9b041 Mon Sep 17 00:00:00 2001 From: parker Date: Thu, 17 Jul 2025 02:59:36 +0100 Subject: [PATCH] feat(tab menu): functional search --- src/Gui/Network/TabMenu.cpp | 39 ++++++++++++++++++++++++++++++++----- src/Gui/Network/TabMenu.h | 36 +++++++++++++++++++++++----------- 2 files changed, 59 insertions(+), 16 deletions(-) diff --git a/src/Gui/Network/TabMenu.cpp b/src/Gui/Network/TabMenu.cpp index dd5b35f..fb3324d 100644 --- a/src/Gui/Network/TabMenu.cpp +++ b/src/Gui/Network/TabMenu.cpp @@ -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(sender()); @@ -176,12 +200,12 @@ bool enzo::ui::TabMenu::event(QEvent *event) focusOutEvent(static_cast(event)); return true; } - std::cout << "key pressed: " << static_cast(event)->text().toStdString() << "\n"; - } - else if(event->type() == QEvent::KeyRelease) - { - std::cout << "key release: " << static_cast(event)->text().toStdString() << "\n"; + // std::cout << "key pressed: " << static_cast(event)->text().toStdString() << "\n"; } + // else if(event->type() == QEvent::KeyRelease) + // { + // std::cout << "key release: " << static_cast(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) +// { +// } diff --git a/src/Gui/Network/TabMenu.h b/src/Gui/Network/TabMenu.h index 9916cef..3b8c7e0 100644 --- a/src/Gui/Network/TabMenu.h +++ b/src/Gui/Network/TabMenu.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -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 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); + +// }; + }