summaryrefslogtreecommitdiff
path: root/examples/triage/strings.h
diff options
context:
space:
mode:
authorop2786 <op2786@proton.me>2022-10-31 13:17:40 +0100
committerXusheng <xusheng@vector35.com>2023-01-05 16:41:21 +0800
commitb4b6d3f5ca9751df27287684fa1fc21170e62d59 (patch)
tree2328886e8ef6eb084984077f7b09606fc7d302f5 /examples/triage/strings.h
parent69e95dfa4617e4257a8b021eae8184c2f0fcbbd9 (diff)
added string list for triage view
Diffstat (limited to 'examples/triage/strings.h')
-rw-r--r--examples/triage/strings.h71
1 files changed, 71 insertions, 0 deletions
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 <QtCore/QAbstractItemModel>
+#include <QtWidgets/QTreeView>
+#include "filter.h"
+
+
+class GenericStringsModel : public QAbstractItemModel
+{
+ BinaryViewRef m_data;
+ std::vector<BNStringReference> 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