/** * @RDE_HEADER@ * PresentationManangement - Script Overview Dialog Model * $Id$ * $HeadURL$ * $Author$ * * Created by Mike Wille, SLSE, 2017-03-15 */ #include "evl_model.h" #include namespace Evaluations { CriteriumDialogModel::CriteriumDialogModel(QObject *parent) : LtsWidgets::LtsAbstractTableModel( { tr("Id"), tr("Name"), tr("Description"), tr("Operator") }, parent) , m_logger(getLogger("CriteriumDialogModel")) {} bool CriteriumDialogModel::initModel(const std::shared_ptr &dtc, const std::shared_ptr &opmDtc ) { m_opmDtc = opmDtc; connect(dtc.get(), &Interface::Dtc::evaluationCriteriumChanged, this, &CriteriumDialogModel::onDataChanged); dtc->evaluationCriteriums([this](const EvaluationCriterium & e) { insertRow(e); }); INFO_LOG(m_logger) << "initModel - #EvalCriteria: " << m_vecData.size(); return true; } QVariant CriteriumDialogModel::data(const QModelIndex &index, int role) const { if (role != Qt::DisplayRole || !indexIsValid(index)) return QVariant(); const Evaluations::EvaluationCriterium &eval = m_vecData.at(index.row()); switch (index.column()) { case Id: return eval.id(); case Name: return QString::fromStdString(eval.name()); case Description: return QString::fromStdString(eval.description()); case Operator: return QString::fromStdString(m_opmDtc->user(eval.operatorId()).name()); } return QVariant(); } // CriteriumFilterModel void CriteriumFilterModel::setOperatorId(int operatorId) { if (m_operatorId == operatorId) return; m_operatorId = operatorId; invalidateFilter(); } void CriteriumFilterModel::setSourceModel(QAbstractItemModel *sourceModel) { m_sourceModel = qobject_cast(sourceModel); LtsWidgets::LtsColumnFilterProxyModel::setSourceModel(sourceModel); } bool CriteriumFilterModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const { if (m_operatorId < 0 || !m_sourceModel || source_parent.isValid() || source_row < 0 || source_row >= m_sourceModel->m_vecData.size()) return LtsWidgets::LtsColumnFilterProxyModel::filterAcceptsRow(source_row, source_parent); const auto &data = m_sourceModel->m_vecData.at(source_row); if (data.operatorId() != m_operatorId) return false; return LtsWidgets::LtsColumnFilterProxyModel::filterAcceptsRow(source_row, source_parent); } } // namespace Evaluations