Sandboxie/SandboxiePlus/SandMan/Views/TraceView.h

135 lines
2.7 KiB
C++

#pragma once
#include "../../MiscHelpers/Common/PanelView.h"
#include "../../MiscHelpers/Common/TreeviewEx.h"
#include "../Models/SbieModel.h"
#include "../Models/TraceModel.h"
#include "../Models/MonitorModel.h"
class CTraceFilterProxyModel;
class CTraceTree : public CPanelWidget<QTreeViewEx>
{
Q_OBJECT
public:
CTraceTree(QWidget* parent = 0);
~CTraceTree();
CTraceModel* m_pTraceModel;
public slots:
void SetFilter(const QRegularExpression& Exp, bool bHighLight = false, int Column = -1) {
emit FilterSet(Exp, bHighLight, Column);
}
void SelectNext() {}
signals:
void FilterSet(const QRegularExpression& Exp, bool bHighLight = false, int Column = -1);
};
class CMonitorList : public CPanelWidget<QTreeViewEx>
{
public:
CMonitorList(QWidget* parent = 0);
~CMonitorList();
CSortFilterProxyModel* m_pSortProxy;
CMonitorModel* m_pMonitorModel;
};
class CTraceView : public QWidget
{
Q_OBJECT
public:
CTraceView(bool bStandAlone, QWidget* parent = 0);
~CTraceView();
void AddAction(QAction* pAction);
public slots:
void Refresh();
void Clear();
void OnSetTree();
void OnSetMode();
void OnSetPidFilter();
void OnSetTidFilter();
void OnSetFilter();
private slots:
void UpdateFilters();
void SetFilter(const QRegularExpression& Exp, bool bHighLight = false, int Col = -1); // -1 = any
void SaveToFile();
protected:
void timerEvent(QTimerEvent* pEvent);
int m_uTimerID;
struct SProgInfo
{
QString Name;
QSet<quint32> Threads;
};
QMap<quint32, SProgInfo>m_PidMap;
quint64 m_LastID;
int m_LastCount;
bool m_bUpdatePending;
QMap<QString, CMonitorEntryPtr> m_MonitorMap;
protected:
friend int CTraceView__Filter(const CTraceEntryPtr& pEntry, void* params);
bool m_FullRefresh;
QRegularExpression m_FilterExp;
bool m_bHighLight;
//int m_FilterCol;
quint32 m_FilterPid;
quint32 m_FilterTid;
QList<quint32> m_FilterTypes;
quint32 m_FilterStatus;
void* m_pCurrentBox;
QVBoxLayout* m_pMainLayout;
CTraceTree* m_pTrace;
CMonitorList* m_pMonitor;
QToolBar* m_pTraceToolBar;
QAction* m_pMonitorMode;
QAction* m_pTraceTree;
QComboBox* m_pTracePid;
QComboBox* m_pTraceTid;
class QCheckList* m_pTraceType;
QComboBox* m_pTraceStatus;
QAction* m_pAllBoxes;
QAction* m_pSaveToFile;
QWidget* m_pView;
QStackedLayout* m_pLayout;
};
////////////////////////////////////////////////////////////////////////////////////////
// CTraceWindow
class CTraceWindow : public QDialog
{
Q_OBJECT
public:
CTraceWindow(QWidget *parent = Q_NULLPTR);
~CTraceWindow();
signals:
void Closed();
protected:
void closeEvent(QCloseEvent *e);
};