feat(tab menu): functional search
This commit is contained in:
@@ -34,10 +34,13 @@ enzo::ui::TabMenu::TabMenu(QWidget *parent, Qt::WindowFlags f)
|
|||||||
nodeScrollArea_ = new QScrollArea();
|
nodeScrollArea_ = new QScrollArea();
|
||||||
nodeHolderLayout_ = new QVBoxLayout();
|
nodeHolderLayout_ = new QVBoxLayout();
|
||||||
|
|
||||||
|
connect(searchBar_, &QLineEdit::textChanged, this, &TabMenu::textChanged);
|
||||||
|
|
||||||
auto tableItems = enzo::op::OperatorTable::getData();
|
auto tableItems = enzo::op::OperatorTable::getData();
|
||||||
for(auto tableItem : tableItems)
|
for(auto tableItem : tableItems)
|
||||||
{
|
{
|
||||||
auto button = new TabMenuButton(tableItem.displayName.c_str());
|
auto button = new TabMenuButton(tableItem.displayName.c_str());
|
||||||
|
buttons_.push_back(button);
|
||||||
button->nodeName = tableItem.internalName;
|
button->nodeName = tableItem.internalName;
|
||||||
button->setFocusPolicy(Qt::NoFocus);
|
button->setFocusPolicy(Qt::NoFocus);
|
||||||
connect(button, &TabMenuButton::clicked, this, &enzo::ui::TabMenu::nodeClicked);
|
connect(button, &TabMenuButton::clicked, this, &enzo::ui::TabMenu::nodeClicked);
|
||||||
@@ -124,6 +127,27 @@ enzo::ui::TabMenu::TabMenu(QWidget *parent, Qt::WindowFlags f)
|
|||||||
setDisabled(true);
|
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()
|
void enzo::ui::TabMenu::nodeClicked()
|
||||||
{
|
{
|
||||||
TabMenuButton* buttonClicked = static_cast<TabMenuButton*>(sender());
|
TabMenuButton* buttonClicked = static_cast<TabMenuButton*>(sender());
|
||||||
@@ -176,12 +200,12 @@ bool enzo::ui::TabMenu::event(QEvent *event)
|
|||||||
focusOutEvent(static_cast<QFocusEvent*>(event));
|
focusOutEvent(static_cast<QFocusEvent*>(event));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
std::cout << "key pressed: " << 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";
|
|
||||||
}
|
}
|
||||||
|
// else if(event->type() == QEvent::KeyRelease)
|
||||||
|
// {
|
||||||
|
// std::cout << "key release: " << static_cast<QKeyEvent*>(event)->text().toStdString() << "\n";
|
||||||
|
// }
|
||||||
QApplication::sendEvent(searchBar_, clone);
|
QApplication::sendEvent(searchBar_, clone);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -193,6 +217,7 @@ enzo::ui::TabMenuButton::TabMenuButton(const QString &text, QWidget *parent)
|
|||||||
: QPushButton(parent)
|
: QPushButton(parent)
|
||||||
{
|
{
|
||||||
setObjectName("TabMenuButton");
|
setObjectName("TabMenuButton");
|
||||||
|
displayText_ = text;
|
||||||
|
|
||||||
|
|
||||||
textLabel_ = new QLabel(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)
|
||||||
|
// {
|
||||||
|
|
||||||
|
// }
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <qcontainerfwd.h>
|
||||||
#include <qlineedit.h>
|
#include <qlineedit.h>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <qpushbutton.h>
|
#include <qpushbutton.h>
|
||||||
@@ -11,6 +12,21 @@
|
|||||||
|
|
||||||
namespace enzo::ui
|
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
|
class TabMenu
|
||||||
: public QWidget
|
: public QWidget
|
||||||
{
|
{
|
||||||
@@ -25,6 +41,8 @@ private:
|
|||||||
QWidget* nodeHolder_;
|
QWidget* nodeHolder_;
|
||||||
QVBoxLayout* nodeHolderLayout_;
|
QVBoxLayout* nodeHolderLayout_;
|
||||||
void doHide();
|
void doHide();
|
||||||
|
void textChanged(const QString &text);
|
||||||
|
std::vector<TabMenuButton*> buttons_;
|
||||||
protected:
|
protected:
|
||||||
void focusOutEvent(QFocusEvent *event) override;
|
void focusOutEvent(QFocusEvent *event) override;
|
||||||
bool event(QEvent *event) override;
|
bool event(QEvent *event) override;
|
||||||
@@ -33,16 +51,12 @@ protected slots:
|
|||||||
void nodeClicked();
|
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);
|
||||||
|
|
||||||
|
// };
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user