#ifndef ABTRACTOUTMODEL_H #define ABTRACTOUTMODEL_H #include "qstandarditemmodel.h" #include "view/step/models/abstractoutwidget.h" #include "qset.h" class AbstractOutModel : public QStandardItem { public: enum ModelType { M_Result, M_Group, M_Item }; enum Status { S_Copy, S_DeletedCopy, S_Added }; AbstractOutModel(); ~AbstractOutModel(); virtual AbstractOutModel::ModelType getModelType() = 0; virtual AbstractOutWidget* getWidget(); virtual QString getName() = 0; virtual QString getDef(); virtual QString getPrefixedAlias(); virtual QString getAlias(); virtual QString getAutoRenameName(); virtual QString getDisplayableName(); virtual QString getDescription(); virtual bool isValid(); virtual QString getOutModelsDefines(); inline AbstractOutModel::Status getStatus() {return _status;} virtual void getIncludes(QSet &list) = 0; virtual QString getModelDoc() = 0; virtual QString getModelDeclaration() = 0; virtual QString getCreateOutResultModelListProtectedContent(QString resultModelName = "", bool rootGroup = false) = 0; virtual QString getComputeContent(QString resultName, QString parentName = "", int indent = 1, bool rootGroup = false) = 0; virtual void getChildrenIncludes(QSet &list); virtual void getChildrenModelDoc(QString &result); virtual void getChildrenModelDeclaration(QString &result); virtual void getChildrenCreateOutResultModelListProtectedContent(QString &result, QString resultModelName = ""); virtual void getChildrenComputeContent(QString &result, QString resultName, int indent); void setDeleted(); void setNotDeleted(); void onAliasChange(); protected: AbstractOutWidget* _widget; AbstractOutModel::Status _status; }; #endif // ABTRACTOUTMODEL_H