Appending and removing items are done via GeneralSortFilterModel instead of TableModel directly.
This commit is contained in:
@ -3,12 +3,22 @@
|
|||||||
|
|
||||||
GeneralSortFilterModel::GeneralSortFilterModel(std::shared_ptr<TableModel> sourceModel)
|
GeneralSortFilterModel::GeneralSortFilterModel(std::shared_ptr<TableModel> sourceModel)
|
||||||
: QSortFilterProxyModel{sourceModel.get()}
|
: QSortFilterProxyModel{sourceModel.get()}
|
||||||
, m_sourceModel(sourceModel) {
|
, m_tableModel(sourceModel) {
|
||||||
setSourceModel(sourceModel.get());
|
setSourceModel(sourceModel.get());
|
||||||
|
|
||||||
m_collator.setNumericMode(true);
|
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,
|
bool GeneralSortFilterModel::lessThan(const QModelIndex& source_left,
|
||||||
const QModelIndex& source_right) const {
|
const QModelIndex& source_right) const {
|
||||||
if (source_left.column() != source_right.column()) {
|
if (source_left.column() != source_right.column()) {
|
||||||
|
|||||||
@ -11,12 +11,15 @@ class GeneralSortFilterModel : public QSortFilterProxyModel {
|
|||||||
public:
|
public:
|
||||||
explicit GeneralSortFilterModel(std::shared_ptr<TableModel> sourceModel = nullptr);
|
explicit GeneralSortFilterModel(std::shared_ptr<TableModel> sourceModel = nullptr);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void appendItems(const QByteArray& jsonDoc);
|
||||||
|
bool removeRows(int firstRow, int nRows, const QModelIndex& parentIndex = QModelIndex()) override;
|
||||||
/// QSortFilterProxyModel interface
|
/// QSortFilterProxyModel interface
|
||||||
protected:
|
protected:
|
||||||
bool lessThan(const QModelIndex& sourceLeft, const QModelIndex& sourceRight) const override;
|
bool lessThan(const QModelIndex& sourceLeft, const QModelIndex& sourceRight) const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<TableModel> m_sourceModel;
|
std::shared_ptr<TableModel> m_tableModel;
|
||||||
QCollator m_collator; /// for sorting
|
QCollator m_collator; /// for sorting
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user