#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()); 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, eStatus, //eTitle, //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 = -1; boxType = -1; } CSandBoxPtr pBox; int inUse; int boxType; CBoxedProcessPtr pProcess; }; 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); //virtual QVariant GetDefaultIcon() const; private: enum EBoxColors { eYelow = 0, eRed, eGreen, eBlue, eCyan, eMagenta, eOrang, eMaxColor }; QMap > m_BoxIcons; //QIcon m_BoxEmpty; //QIcon m_BoxInUse; QIcon m_ExeIcon; };