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();
|
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
|
} // namespace Models
|
||||||
|
|
|
@ -90,6 +90,8 @@ public:
|
||||||
void setItems(const QList<ChecklistItem> &items);
|
void setItems(const QList<ChecklistItem> &items);
|
||||||
void restore(QSettings &settings, const QString &name);
|
void restore(QSettings &settings, const QString &name);
|
||||||
void save(QSettings &settings, const QString &name) const;
|
void save(QSettings &settings, const QString &name) const;
|
||||||
|
QVariantList toVariantList() const;
|
||||||
|
void applyVariantList(const QVariantList &checkedIds);
|
||||||
static constexpr int idRole();
|
static constexpr int idRole();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Reference in New Issue