Add toVariantList()/applyVariantList() to ChecklistModel
This makes (de)serializing the state easier when not using QSettings.
This commit is contained in:
parent
36f3c71a66
commit
041c05555f
|
@ -246,4 +246,31 @@ void ChecklistModel::save(QSettings &settings, const QString &name) const
|
|||
}
|
||||
settings.endArray();
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns the checked IDs.
|
||||
*/
|
||||
QVariantList ChecklistModel::toVariantList() const
|
||||
{
|
||||
QVariantList checkedIds;
|
||||
checkedIds.reserve(m_items.size());
|
||||
for (const auto &item : m_items) {
|
||||
if (item.isChecked()) {
|
||||
checkedIds << item.id();
|
||||
}
|
||||
}
|
||||
return checkedIds;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Checks all items contained by \a checkedIds and unchecks other items.
|
||||
*/
|
||||
void ChecklistModel::applyVariantList(const QVariantList &checkedIds)
|
||||
{
|
||||
for (auto &item : m_items) {
|
||||
item.m_checkState = checkedIds.contains(item.id()) ? Qt::Checked : Qt::Unchecked;
|
||||
}
|
||||
emit dataChanged(index(0), index(m_items.size()), { Qt::CheckStateRole });
|
||||
}
|
||||
|
||||
} // namespace Models
|
||||
|
|
|
@ -90,6 +90,8 @@ public:
|
|||
void setItems(const QList<ChecklistItem> &items);
|
||||
void restore(QSettings &settings, const QString &name);
|
||||
void save(QSettings &settings, const QString &name) const;
|
||||
QVariantList toVariantList() const;
|
||||
void applyVariantList(const QVariantList &checkedIds);
|
||||
static constexpr int idRole();
|
||||
|
||||
private:
|
||||
|
|
Loading…
Reference in New Issue