#pragma once #include #include "../SbiePlusAPI.h" #include "../../MiscHelpers/Common/TreeItemModel.h" class CSbieModel : public CTreeItemModel { Q_OBJECT public: CSbieModel(QObject *parent = 0); ~CSbieModel(); QList Sync(const QMap& BoxList, const QMap& Groups = QMap(), bool ShowHidden = false); CSandBoxPtr GetSandBox(const QModelIndex &index) const; CBoxedProcessPtr GetProcess(const QModelIndex &index) const; QVariant GetID(const QModelIndex &index) const; enum ETypes { eNone = 0, eGroup, eBox, eProcess } GetType(const QModelIndex &index) const; int columnCount(const QModelIndex &parent = QModelIndex()) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; enum EColumns { eName = 0, eProcessId, eTitle, eStatus, //eLogCount, eTimeStamp, ePath, eCount }; protected: bool Sync(const CSandBoxPtr& pBox, const QList& Path, const QMap& ProcessList, QMap, QList >& New, QHash& Old, QList& Added); struct SSandBoxNode: STreeNode { SSandBoxNode(const QVariant& Id) : STreeNode(Id) { inUse = false; boxType = -1; OrderNumber = 0; } CSandBoxPtr pBox; bool inUse; int boxType; int OrderNumber; CBoxedProcessPtr pProcess; }; virtual QVariant NodeData(STreeNode* pNode, int role, int section) const; virtual STreeNode* MkNode(const QVariant& Id) { return new SSandBoxNode(Id); } QList MakeProcPath(const QString& BoxName, const CBoxedProcessPtr& pProcess, const QMap& ProcessList); QList MakeProcPath(const CBoxedProcessPtr& pProcess, const QMap& ProcessList); bool TestProcPath(const QList& Path, const QString& BoxName, const CBoxedProcessPtr& pProcess, const QMap& ProcessList, int Index = 0); QString FindParent(const QVariant& Name, const QMap& Groups); QList MakeBoxPath(const QVariant& Name, const QMap& Groups); void MakeBoxPath(const QVariant& Name, const QMap& Groups, QList& Path); //virtual QVariant GetDefaultIcon() const; private: //QIcon m_BoxEmpty; //QIcon m_BoxInUse; QIcon m_ExeIcon; };