File indexing completed on 2024-05-12 17:08:30

0001 /*
0002  * SPDX-FileCopyrightText: 2021 David Redondo <kde@david-redondo.de>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 
0007 #include "ReverseColumnsProxyModel.h"
0008 
0009 ReverseColumnsProxyModel::ReverseColumnsProxyModel(QObject *parent)
0010     : KRearrangeColumnsProxyModel(parent)
0011 {
0012 }
0013 
0014 void ReverseColumnsProxyModel::setSourceModel(QAbstractItemModel *sourceModel)
0015 {
0016     auto oldModel = this->sourceModel();
0017     if (oldModel == sourceModel) {
0018         return;
0019     }
0020     if (oldModel) {
0021         oldModel->disconnect(this);
0022     }
0023     KRearrangeColumnsProxyModel::setSourceModel(sourceModel);
0024     if (sourceModel) {
0025         connect(sourceModel, &QAbstractItemModel::columnsInserted, this, &ReverseColumnsProxyModel::reverseColumns);
0026         connect(sourceModel, &QAbstractItemModel::columnsRemoved, this, &ReverseColumnsProxyModel::reverseColumns);
0027         connect(sourceModel, &QAbstractItemModel::modelReset, this, &ReverseColumnsProxyModel::reverseColumns);
0028         reverseColumns();
0029     }
0030 }
0031 void ReverseColumnsProxyModel::reverseColumns()
0032 {
0033     if (!sourceModel()) {
0034         return;
0035     }
0036     QVector<int> columns(sourceModel()->columnCount());
0037     std::iota(columns.rbegin(), columns.rend(), 0);
0038     setSourceColumns(columns);
0039 }