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)