From d78fc734c1e175440c1dedb569719b6c7316fbb7 Mon Sep 17 00:00:00 2001 From: Bent Witthold Date: Mon, 12 Jan 2026 10:07:59 +0100 Subject: [PATCH] Appending and removing items are done via GeneralSortFilterModel instead of TableModel directly. --- model/generalsortfiltermodel.cpp | 12 +++++++++++- model/generalsortfiltermodel.h | 5 ++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/model/generalsortfiltermodel.cpp b/model/generalsortfiltermodel.cpp index da593af..3e6c813 100644 --- a/model/generalsortfiltermodel.cpp +++ b/model/generalsortfiltermodel.cpp @@ -3,12 +3,22 @@ GeneralSortFilterModel::GeneralSortFilterModel(std::shared_ptr sourceModel) : QSortFilterProxyModel{sourceModel.get()} - , m_sourceModel(sourceModel) { + , m_tableModel(sourceModel) { setSourceModel(sourceModel.get()); m_collator.setNumericMode(true); } +void GeneralSortFilterModel::appendItems(const QByteArray& jsonDoc) { + m_tableModel->appendItems(jsonDoc); +} + +bool GeneralSortFilterModel::removeRows(int firstRow, int nRows, const QModelIndex& parentIndex) { + const QModelIndex proxyIndex = index(firstRow, 0, parentIndex); + const QModelIndex sourceIndex = mapToSource(proxyIndex); + return m_tableModel->removeRows(sourceIndex.row(), nRows, sourceIndex.parent()); +} + bool GeneralSortFilterModel::lessThan(const QModelIndex& source_left, const QModelIndex& source_right) const { if (source_left.column() != source_right.column()) { diff --git a/model/generalsortfiltermodel.h b/model/generalsortfiltermodel.h index 6084b3e..9229f5b 100644 --- a/model/generalsortfiltermodel.h +++ b/model/generalsortfiltermodel.h @@ -11,12 +11,15 @@ class GeneralSortFilterModel : public QSortFilterProxyModel { public: explicit GeneralSortFilterModel(std::shared_ptr sourceModel = nullptr); + public slots: + void appendItems(const QByteArray& jsonDoc); + bool removeRows(int firstRow, int nRows, const QModelIndex& parentIndex = QModelIndex()) override; /// QSortFilterProxyModel interface protected: bool lessThan(const QModelIndex& sourceLeft, const QModelIndex& sourceRight) const override; private: - std::shared_ptr m_sourceModel; + std::shared_ptr m_tableModel; QCollator m_collator; /// for sorting };