diff --git a/src/cpp/serviceitemmodel.cpp b/src/cpp/serviceitemmodel.cpp index f4f1bb2..6886a15 100644 --- a/src/cpp/serviceitemmodel.cpp +++ b/src/cpp/serviceitemmodel.cpp @@ -394,6 +394,21 @@ bool ServiceItemModel::moveUp(int id) { return false; } +bool ServiceItemModel::moveRowsRust(int source, int dest, int count, ServiceItemMod *rustModel) { + const QModelIndex parent = index(source).parent(); + const bool isMoveDown = dest > source; + + if (!beginMoveRows(parent, source, source + count - 1, + parent, dest)) { + qDebug() << "Can't move rows"; + return false; + } + + const bool moved = rustModel->moveRows(source, dest, count); + endMoveRows(); + return moved; +} + QVariantMap ServiceItemModel::getRust(int index, ServiceItemMod *rustModel) const { QVariantMap item = rustModel->getItem(index); return item; diff --git a/src/cpp/serviceitemmodel.h b/src/cpp/serviceitemmodel.h index a4ded54..dd9b9b5 100644 --- a/src/cpp/serviceitemmodel.h +++ b/src/cpp/serviceitemmodel.h @@ -66,6 +66,7 @@ public: Q_INVOKABLE void removeItem(int index); Q_INVOKABLE void removeItems(); Q_INVOKABLE bool moveRows(int sourceIndex, int destIndex, int count); + Q_INVOKABLE bool moveRowsRust(int source, int dest, int count, ServiceItemMod *rustModel); Q_INVOKABLE bool moveDown(int index); Q_INVOKABLE bool moveUp(int index); Q_INVOKABLE bool select(int id);