summaryrefslogtreecommitdiff
path: root/ui/functionlist.h
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2019-07-05 11:29:28 -0400
committerPeter LaFosse <peter@vector35.com>2019-07-14 14:42:52 -0400
commita096663fc17d08af0bf2581150b618a1a8f09767 (patch)
treea865bc30f99da2612ed4aa61d46e0c483fb35b19 /ui/functionlist.h
parentc061061966ee12a7d6ace672b7798257eeb22cfd (diff)
Add support for sorting the symbol list by name or address
Refactoring Function List to support Symbols and Data Variables too Renaming FunctionList and FunctionsView to SymbolList/SymbolsView Keep track of current selection and scroll position between model resets
Diffstat (limited to 'ui/functionlist.h')
-rw-r--r--ui/functionlist.h138
1 files changed, 0 insertions, 138 deletions
diff --git a/ui/functionlist.h b/ui/functionlist.h
deleted file mode 100644
index c9119d3e..00000000
--- a/ui/functionlist.h
+++ /dev/null
@@ -1,138 +0,0 @@
-#pragma once
-
-#include <QtWidgets/QListView>
-#include <QtCore/QAbstractItemModel>
-#include <QtCore/QTimer>
-#include <QtWidgets/QLineEdit>
-#include <vector>
-#include <mutex>
-#include "binaryninjaapi.h"
-#include "viewframe.h"
-#include "filter.h"
-#include "uicontext.h"
-
-#define FUNCTION_LIST_UPDATE_INTERVAL 250
-
-class FunctionsView;
-
-class BINARYNINJAUIAPI FunctionListModel: public QAbstractItemModel, public BinaryNinja::BinaryDataNotification
-{
- Q_OBJECT
-
- enum FunctonListUpdateType
- {
- AddedToFunctionList,
- RemovedFromFunctionList,
- UpdatedInFunctionList
- };
-
- struct FunctionListUpdateEvent
- {
- FunctionRef func;
- FunctonListUpdateType type;
- };
-
- struct NamedFunction
- {
- FunctionRef func;
- std::string name;
- bool named;
- };
-
- class FunctionListUpdate: public BinaryNinja::RefCountObject
- {
- std::mutex m_mutex;
- bool m_valid;
- FunctionListModel* m_model;
-
- public:
- FunctionListUpdate(FunctionListModel* model);
- void start();
- void abort();
- };
-
- QWidget* m_funcList;
- ViewFrame* m_view;
- BinaryViewRef m_data;
- std::vector<FunctionRef> m_funcs;
- std::vector<NamedFunction> m_allFuncs;
- FunctionRef m_currentFunc;
- std::string m_filter;
-
- std::mutex m_updateMutex;
- std::vector<FunctionListUpdateEvent> m_updates;
- bool m_fullUpdate;
-
- BinaryNinja::Ref<FunctionListUpdate> m_backgroundUpdate;
- volatile bool m_backgroundUpdateComplete;
- std::vector<FunctionRef> m_backgroundUpdateFuncs;
-
-
- static bool functionComparison(const FunctionRef& a, const FunctionRef& b);
- static bool allFunctionComparison(const NamedFunction& a, const NamedFunction& b);
-
-public:
- FunctionListModel(QWidget* parent, ViewFrame* view, BinaryViewRef data);
- virtual ~FunctionListModel();
-
- virtual QModelIndex index(int row, int col, const QModelIndex& parent) const override;
- virtual QModelIndex parent(const QModelIndex& i) const override;
- virtual bool hasChildren(const QModelIndex& parent) const override;
- virtual int rowCount(const QModelIndex& parent = QModelIndex()) const override;
- virtual int columnCount(const QModelIndex& parent) const override;
- virtual QVariant data(const QModelIndex& i, int role) const override;
-
- virtual void OnAnalysisFunctionAdded(BinaryNinja::BinaryView* data, BinaryNinja::Function* func) override;
- virtual void OnAnalysisFunctionRemoved(BinaryNinja::BinaryView* data, BinaryNinja::Function* func) override;
- virtual void OnAnalysisFunctionUpdated(BinaryNinja::BinaryView* data, BinaryNinja::Function* func) override;
-
- void updateFonts();
- bool setCurrentFunction(FunctionRef func);
- QModelIndex findFunction(FunctionRef func);
- QModelIndex findCurrentFunction();
- FunctionRef getFunctionForIndex(int i);
-
- void updateFunctions();
- void backgroundUpdate();
- bool hasFunctions() const;
-
- void setFilter(const std::string& filter);
-};
-
-class BINARYNINJAUIAPI FunctionList: public QListView, public FilterTarget
-{
- Q_OBJECT
-
- ViewFrame* m_view;
- BinaryViewRef m_data;
- FunctionsView* m_functionsView;
- FunctionListModel* m_list;
- QTimer* m_updateTimer;
- bool m_disableScrollToFunction;
-
-public:
- FunctionList(FunctionsView* parent, ViewFrame* frame, BinaryViewRef data);
-
- void updateFonts();
- void setCurrentFunction(FunctionRef func);
-
- virtual void scrollToFirstItem() override;
- virtual void scrollToCurrentItem() override;
- virtual void selectFirstItem() override;
- virtual void activateFirstItem() override;
- virtual void setFilter(const std::string& filter) override;
-
- bool hasFunctions();
-
- virtual void copy();
- virtual void paste();
- virtual bool canCopy();
-
-protected:
- virtual void focusOutEvent(QFocusEvent* event) override;
- virtual void keyPressEvent(QKeyEvent* event) override;
-
-private Q_SLOTS:
- void goToFunction(const QModelIndex& i);
- void updateTimerEvent();
-};