13 : QAbstractListModel(parent)
24 auto roles = QAbstractListModel::roleNames();
36 if (!checkIndex(index, CheckIndexOption::IndexIsValid | CheckIndexOption::ParentIsInvalid)) {
40 if (index.row() < 0 || index.row() >=
rowCount()) {
44 const RuleSettings *settings = m_ruleBook->
ruleSettingsAt(index.row());
48 return settings->description();
56 if (!checkIndex(index, CheckIndexOption::IndexIsValid | CheckIndexOption::ParentIsInvalid)) {
64 if (settings->description() == value.toString()) {
67 settings->setDescription(value.toString());
73 Q_EMIT dataChanged(index, index, {role});
80 if (row < 0 || row >
rowCount() || parent.isValid()) {
84 beginInsertRows(parent, row, row + count - 1);
85 for (
int i = 0; i < count; i++) {
96 if (row < 0 || row >
rowCount() || parent.isValid()) {
100 beginRemoveRows(parent, row, row + count - 1);
101 for (
int i = 0; i < count; i++) {
110 const QModelIndex &destinationParent,
int destinationChild)
112 if (sourceParent != destinationParent || sourceParent != QModelIndex()) {
116 const bool isMoveDown = destinationChild > sourceRow;
119 if (!beginMoveRows(sourceParent, sourceRow, sourceRow + count - 1,
120 destinationParent, isMoveDown ? destinationChild + 1 : destinationChild)) {
124 for (
int i = 0; i < count; i++) {
125 m_ruleBook->
moveRuleSettings(isMoveDown ? sourceRow : sourceRow + i, destinationChild);
134 Q_ASSERT(row >= 0 && row <
rowCount());
140 Q_ASSERT(row >= 0 && row <
rowCount());
146 Q_ASSERT(row >= 0 && row <
rowCount());
147 if (description == m_ruleBook->
ruleSettingsAt(row)->description()) {
153 Q_EMIT dataChanged(index(row), index(row), {});
158 Q_ASSERT(row >= 0 && row <
rowCount());
162 Q_EMIT dataChanged(index(row), index(row), {});
187 const KConfigSkeletonItem::List itemList = source.items();
188 for (
const KConfigSkeletonItem *item : itemList) {
189 dest->findItem(item->name())->setProperty(item->property());
195#include "moc_rulebookmodel.cpp"
QHash< int, QByteArray > roleNames() const override
RuleSettings * ruleSettingsAt(int row) const
void setDescriptionAt(int row, const QString &description)
static void copySettingsTo(RuleSettings *dest, const RuleSettings &source)
QString descriptionAt(int row) const
bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) override
bool setData(const QModelIndex &index, const QVariant &value, int role) override
bool removeRows(int row, int count, const QModelIndex &parent=QModelIndex()) override
int rowCount(const QModelIndex &parent=QModelIndex()) const override
RuleBookModel(QObject *parent=nullptr)
bool insertRows(int row, int count, const QModelIndex &parent=QModelIndex()) override
void setRuleSettingsAt(int row, const RuleSettings &settings)
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
RuleSettings * ruleSettingsAt(int row) const
void removeRuleSettingsAt(int row)
bool usrIsSaveNeeded() const
void moveRuleSettings(int srcRow, int destRow)
RuleSettings * insertRuleSettingsAt(int row)