##// END OF EJS Templates
Merge branch 'feature/VariableModel3' into develop
Merge branch 'feature/VariableModel3' into develop

File last commit:

r153:81409bbf8178
r160:030b888e93aa merge
Show More
VariableModel.cpp
120 lines | 3.0 KiB | text/x-c | CppLexer
Alexandre Leroux
Changes Variable from struct to class
r151 #include <Variable/Variable.h>
Alexandre Leroux
Creates the variable model...
r107 #include <Variable/VariableModel.h>
Alexandre Leroux
Updates VariableModel::createVariable() method...
r153 #include <Data/IDataSeries.h>
Alexandre Leroux
Creates the variable model...
r107
Q_LOGGING_CATEGORY(LOG_VariableModel, "VariableModel")
Alexandre Leroux
Adapts VariableModel to be a QabstractTableModel...
r140 namespace {
Alexandre Leroux
Implements headerData() method
r141 // Column indexes
const auto NAME_COLUMN = 0;
const auto UNIT_COLUMN = 1;
const auto MISSION_COLUMN = 2;
Alexandre Leroux
Adapts VariableModel to be a QabstractTableModel...
r140 const auto NB_COLUMNS = 3;
} // namespace
Alexandre Leroux
Creates the variable model...
r107 struct VariableModel::VariableModelPrivate {
/// Variables created in SciQlop
Alexandre Leroux
Updates VariableModel::createVariable() method...
r153 std::vector<std::shared_ptr<Variable> > m_Variables;
Alexandre Leroux
Creates the variable model...
r107 };
Alexandre Leroux
Adapts VariableModel to be a QabstractTableModel...
r140 VariableModel::VariableModel(QObject *parent)
: QAbstractTableModel{parent}, impl{spimpl::make_unique_impl<VariableModelPrivate>()}
Alexandre Leroux
Creates the variable model...
r107 {
}
Alexandre Leroux
Updates VariableModel::createVariable() method...
r153 std::shared_ptr<Variable>
VariableModel::createVariable(const QString &name,
std::unique_ptr<IDataSeries> defaultDataSeries) noexcept
Alexandre Leroux
Creates the variable model...
r107 {
Alexandre Leroux
Notifies view when a variable is added to the model
r144 auto insertIndex = rowCount();
beginInsertRows({}, insertIndex, insertIndex);
Alexandre Leroux
Creates the variable model...
r107 /// @todo For the moment, the other data of the variable is initialized with default values
auto variable
Alexandre Leroux
Updates VariableModel::createVariable() method...
r153 = std::make_shared<Variable>(name, QStringLiteral("unit"), QStringLiteral("mission"));
variable->addDataSeries(std::move(defaultDataSeries));
impl->m_Variables.push_back(variable);
Alexandre Leroux
Creates the variable model...
r107
Alexandre Leroux
Notifies view when a variable is added to the model
r144 endInsertRows();
Alexandre Leroux
Updates VariableModel::createVariable() method...
r153 return variable;
Alexandre Leroux
Creates the variable model...
r107 }
Alexandre Leroux
Adapts VariableModel to be a QabstractTableModel...
r140
int VariableModel::columnCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
return NB_COLUMNS;
}
int VariableModel::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
return impl->m_Variables.size();
}
QVariant VariableModel::data(const QModelIndex &index, int role) const
{
Alexandre Leroux
Implements data() method
r142 if (!index.isValid()) {
return QVariant{};
}
if (index.row() < 0 || index.row() >= rowCount()) {
return QVariant{};
}
if (role == Qt::DisplayRole) {
Alexandre Leroux
Removes useless const ref
r147 if (auto variable = impl->m_Variables.at(index.row()).get()) {
Alexandre Leroux
Implements data() method
r142 switch (index.column()) {
case NAME_COLUMN:
Alexandre Leroux
Changes Variable from struct to class
r151 return variable->name();
Alexandre Leroux
Implements data() method
r142 case UNIT_COLUMN:
Alexandre Leroux
Changes Variable from struct to class
r151 return variable->unit();
Alexandre Leroux
Implements data() method
r142 case MISSION_COLUMN:
Alexandre Leroux
Changes Variable from struct to class
r151 return variable->mission();
Alexandre Leroux
Implements data() method
r142 default:
// No action
break;
}
qWarning(LOG_VariableModel())
<< tr("Can't get data (unknown column %1)").arg(index.column());
}
else {
qWarning(LOG_VariableModel()) << tr("Can't get data (no variable)");
}
}
Alexandre Leroux
Adapts VariableModel to be a QabstractTableModel...
r140 return QVariant{};
}
QVariant VariableModel::headerData(int section, Qt::Orientation orientation, int role) const
{
Alexandre Leroux
Implements headerData() method
r141 if (role != Qt::DisplayRole) {
return QVariant{};
}
if (orientation == Qt::Horizontal) {
switch (section) {
case NAME_COLUMN:
return tr("Name");
case UNIT_COLUMN:
return tr("Unit");
case MISSION_COLUMN:
return tr("Mission");
default:
// No action
break;
}
qWarning(LOG_VariableModel())
<< tr("Can't get header data (unknown column %1)").arg(section);
}
Alexandre Leroux
Adapts VariableModel to be a QabstractTableModel...
r140
return QVariant{};
}