chore(ConcatModel): Forward setData to proxy models
This is a nice to have feature to allow ContactModel.sourceModel instances to implement setData
This commit is contained in:
parent
ccc2dfc547
commit
f241928cc9
|
@ -67,6 +67,7 @@ public:
|
||||||
// QAbstractItemModel interface
|
// QAbstractItemModel interface
|
||||||
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
|
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
|
||||||
QVariant data(const QModelIndex &index, int role) const override;
|
QVariant data(const QModelIndex &index, int role) const override;
|
||||||
|
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
|
||||||
QHash<int, QByteArray> roleNames() const override;
|
QHash<int, QByteArray> roleNames() const override;
|
||||||
|
|
||||||
// QQmlParserStatus interface
|
// QQmlParserStatus interface
|
||||||
|
|
|
@ -305,6 +305,38 @@ QVariant ConcatModel::data(const QModelIndex &index, int role) const
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ConcatModel::setData(const QModelIndex &index, const QVariant &value, int role)
|
||||||
|
{
|
||||||
|
if (!checkIndex(index, CheckIndexOption::IndexIsValid))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
auto row = index.row();
|
||||||
|
|
||||||
|
auto source = sourceForIndex(row);
|
||||||
|
if (source.first == nullptr)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
auto model = source.first->model();
|
||||||
|
if (model == nullptr)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
auto sourcePosition = m_sources.indexOf(source.first);
|
||||||
|
if (sourcePosition == -1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
auto& mapping = m_rolesMappingToSource[sourcePosition];
|
||||||
|
auto it = mapping.find(role);
|
||||||
|
|
||||||
|
if (it == mapping.end())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
auto sourceIndex = model->index(source.second, 0);
|
||||||
|
if(!sourceIndex.isValid())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return model->setData(sourceIndex, value, it->second);
|
||||||
|
}
|
||||||
|
|
||||||
QHash<int, QByteArray> ConcatModel::roleNames() const
|
QHash<int, QByteArray> ConcatModel::roleNames() const
|
||||||
{
|
{
|
||||||
return m_roleNames;
|
return m_roleNames;
|
||||||
|
|
Loading…
Reference in New Issue