From b4b6d3f5ca9751df27287684fa1fc21170e62d59 Mon Sep 17 00:00:00 2001 From: op2786 Date: Mon, 31 Oct 2022 13:17:40 +0100 Subject: added string list for triage view --- examples/triage/strings.h | 71 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 examples/triage/strings.h (limited to 'examples/triage/strings.h') diff --git a/examples/triage/strings.h b/examples/triage/strings.h new file mode 100644 index 00000000..9148422c --- /dev/null +++ b/examples/triage/strings.h @@ -0,0 +1,71 @@ +#pragma once + +#include +#include +#include "filter.h" + + +class GenericStringsModel : public QAbstractItemModel +{ + BinaryViewRef m_data; + std::vector m_allEntries, m_entries; + int m_totalCols, m_sortCol; + Qt::SortOrder m_sortOrder; + + void performSort(int col, Qt::SortOrder order); + + public: + GenericStringsModel(BinaryViewRef data); + + virtual int columnCount(const QModelIndex& parent) const override; + virtual int rowCount(const QModelIndex& parent) const override; + virtual QVariant data(const QModelIndex& index, int role) const override; + virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const override; + virtual QModelIndex index(int row, int col, const QModelIndex& parent) const override; + virtual QModelIndex parent(const QModelIndex& index) const override; + virtual void sort(int col, Qt::SortOrder order) override; + void setFilter(const std::string& filterText); + + BNStringReference getStringRefAt(const QModelIndex& index) const; + QString stringRefToQString(const BNStringReference& index) const; +}; + + +class TriageView; +class StringsWidget; + +class StringsTreeView : public QTreeView, public FilterTarget +{ + BinaryViewRef m_data; + StringsWidget* m_parent; + TriageView* m_view; + UIActionHandler m_actionHandler; + GenericStringsModel* m_model; + + public: + StringsTreeView(StringsWidget* parent, TriageView* view, BinaryViewRef data); + + virtual void setFilter(const std::string& filterText) override; + virtual void scrollToFirstItem() override; + virtual void scrollToCurrentItem() override; + virtual void selectFirstItem() override; + virtual void activateFirstItem() override; + virtual void closeFilter() override; + + protected: + virtual void keyPressEvent(QKeyEvent* event) override; + + private Q_SLOTS: + void stringSelected(const QModelIndex& cur, const QModelIndex& prev); + void stringDoubleClicked(const QModelIndex& cur); +}; + + +class StringsWidget : public QWidget +{ + FilteredView* m_filter; + + public: + StringsWidget(QWidget* parent, TriageView* view, BinaryViewRef data); + void showFilter(const QString& filter); +}; \ No newline at end of file -- cgit v1.3.1