From 6c1da5511a6882f5562f38049758c2eecdd69f58 Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Thu, 23 May 2024 19:12:21 -0700 Subject: [PATCH] core/objectmodel: add signals for changes to the list --- src/core/model.cpp | 11 +++++++++-- src/core/model.hpp | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/core/model.cpp b/src/core/model.cpp index 74c7c28..64f7d76 100644 --- a/src/core/model.cpp +++ b/src/core/model.cpp @@ -39,21 +39,28 @@ QObject* UntypedObjectModel::valueAt(QQmlListProperty* property, qsizet void UntypedObjectModel::insertObject(QObject* object, qsizetype index) { auto iindex = index == -1 ? this->valuesList.length() : index; - auto intIndex = static_cast(iindex); + emit this->objectInsertedPre(object, index); + auto intIndex = static_cast(iindex); this->beginInsertRows(QModelIndex(), intIndex, intIndex); this->valuesList.insert(iindex, object); this->endInsertRows(); + emit this->valuesChanged(); + emit this->objectInsertedPost(object, index); } void UntypedObjectModel::removeAt(qsizetype index) { - auto intIndex = static_cast(index); + auto* object = this->valuesList.at(index); + emit this->objectRemovedPre(object, index); + auto intIndex = static_cast(index); this->beginRemoveRows(QModelIndex(), intIndex, intIndex); this->valuesList.removeAt(index); this->endRemoveRows(); + emit this->valuesChanged(); + emit this->objectRemovedPost(object, index); } bool UntypedObjectModel::removeObject(const QObject* object) { diff --git a/src/core/model.hpp b/src/core/model.hpp index bcf5ab6..788d24f 100644 --- a/src/core/model.hpp +++ b/src/core/model.hpp @@ -57,6 +57,10 @@ public: signals: void valuesChanged(); + void objectInsertedPre(QObject* object, qsizetype index); + void objectInsertedPost(QObject* object, qsizetype index); + void objectRemovedPre(QObject* object, qsizetype index); + void objectRemovedPost(QObject* object, qsizetype index); protected: void insertObject(QObject* object, qsizetype index = -1);