#pragma once #include #include "../../QSbieAPI/SbieAPI.h" #include "../../MiscHelpers/Common/TreeItemModel.h" class CTraceModel : public CTreeItemModel { Q_OBJECT public: CTraceModel(QObject* parent = 0); ~CTraceModel(); QList Sync(const QVector& EntryList, void* BoxPtr); CTraceEntryPtr GetEntry(const QModelIndex& index) const; int columnCount(const QModelIndex& parent = QModelIndex()) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; void Clear(); enum EColumns { eProcess = 0, //eTimeStamp, eType, eStatus, eValue, eCount }; struct SProgInfo { SProgInfo() { Dirty = true; } QString Name; bool Dirty; QSet Threads; }; QMapGetPids() { return m_PidMap; } signals: void NewBranche(); protected: struct STraceNode : STreeNode { STraceNode(const QVariant& Id) : STreeNode(Id) {} CTraceEntryPtr pEntry; }; QVariant m_LastID; int m_LastCount; void* m_LastBoxPtr; virtual STreeNode* MkNode(const QVariant& Id) { return new STraceNode(Id); } virtual STreeNode* MkVirtualNode(const QVariant& Id, STreeNode* pParent); /*QList MakePath(const CTraceEntryPtr& pEntry, const QList& EntryList); bool TestPath(const QList& Path, const CTraceEntryPtr& pEntry, const QList& EntryList, int Index = 0);*/ void SetProcessName(const QString& Name, quint32 pid, quint32 tid); QString GetProcessName(quint32 pid); void LogThreadId(quint32 pid, quint32 tid); QMapm_PidMap; };