From 78a4c923fe3fd5790e03e2c963e0a519d8c2b93b Mon Sep 17 00:00:00 2001 From: Glenn Smith Date: Fri, 21 Oct 2022 22:58:46 +0200 Subject: Show filtered/total count in search --- ui/typeview.h | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) (limited to 'ui/typeview.h') diff --git a/ui/typeview.h b/ui/typeview.h index 1aa89cc8..8744ffa7 100644 --- a/ui/typeview.h +++ b/ui/typeview.h @@ -18,6 +18,7 @@ #include "menus.h" #include "xreflist.h" #include "clickablelabel.h" +#include "filter.h" #define TYPE_VIEW_UPDATE_CHECK_INTERVAL 200 @@ -221,6 +222,9 @@ class BINARYNINJAUIAPI TypeView : public QAbstractScrollArea, public View, publi virtual void setNavigationMode(std::string mode) override; virtual std::vector getNavigationModes() override; + size_t getUnfilteredTypeCount() const { return m_allTypeLines.size(); } + size_t getFilteredTypeCount() const { return m_typeLines.size(); } + uint64_t findMatchingLine(const BinaryNinja::QualifiedName& name, uint64_t offset, size_t& cursorOffset); bool navigateToType(const std::string& name, uint64_t offset = 0); @@ -287,6 +291,9 @@ class BINARYNINJAUIAPI TypeView : public QAbstractScrollArea, public View, publi virtual void mouseDoubleClickEvent(QMouseEvent* event) override; virtual void scrollContentsBy(int dx, int dy) override; + Q_SIGNALS: + void updateCount(); + private Q_SLOTS: void copySelection(); void selectAll(); @@ -355,31 +362,13 @@ class TypeViewType : public ViewType \ingroup typeview */ -class BINARYNINJAUIAPI TypeFilterEdit : public QLineEdit -{ - Q_OBJECT - - public: - TypeFilterEdit(QWidget* parent); - - protected: - virtual void keyPressEvent(QKeyEvent* event) override; - - Q_SIGNALS: - void focusView(); -}; - -/*! - - \ingroup typeview -*/ -class BINARYNINJAUIAPI TypeFilter : public QWidget +class BINARYNINJAUIAPI TypeFilter : public QWidget, public FilterTarget { Q_OBJECT TypesContainer* m_container; ClickableIcon* m_showSystemTypes; - TypeFilterEdit* m_textFilter; + FilterEdit* m_textFilter; bool MatchesAutoFilter(BinaryViewRef data, const BinaryNinja::QualifiedName& name); bool MatchesTextFilter(const std::vector& lines); @@ -400,6 +389,15 @@ class BINARYNINJAUIAPI TypeFilter : public QWidget bool areAutoTypesVisible(); void setShowAutoTypes(bool showAutoTypes); void clearTextFilter(); + void setRightText(const QString& text); + + protected: + void setFilter(const std::string& filter) override; + void scrollToFirstItem() override; + void scrollToCurrentItem() override; + void selectFirstItem() override; + void activateFirstItem() override; + void closeFilter() override; }; /*! -- cgit v1.3.1