94 lines
2.5 KiB
C++
Executable File
94 lines
2.5 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* PresentationManangement - Script Overview Dialog Model
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
*
|
|
* Created by Mike Wille, SLSE, 2017-03-15
|
|
*/
|
|
|
|
#include "evl_model.h"
|
|
|
|
#include <Evaluations/evl_translation.h>
|
|
|
|
namespace Evaluations
|
|
{
|
|
|
|
CriteriumDialogModel::CriteriumDialogModel(QObject *parent)
|
|
: LtsWidgets::LtsAbstractTableModel<EvaluationCriterium>(
|
|
{
|
|
tr("Id"),
|
|
tr("Name"),
|
|
tr("Description"),
|
|
tr("Operator")
|
|
},
|
|
parent)
|
|
, m_logger(getLogger("CriteriumDialogModel"))
|
|
{}
|
|
|
|
|
|
bool CriteriumDialogModel::initModel(const std::shared_ptr<Interface::Dtc> &dtc,
|
|
const std::shared_ptr<OperatorManagement::Interface::Dtc> &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<CriteriumDialogModel*>(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
|