/usr/include/KF5/KItemModels/krearrangecolumnsproxymodel.h is in libkf5itemmodels-dev 5.44.0-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | /*
Copyright (c) 2015 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com
Authors: David Faure <david.faure@kdab.com>
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
*/
#ifndef REARRANGECOLUMNSPROXYMODEL_H
#define REARRANGECOLUMNSPROXYMODEL_H
#include <QIdentityProxyModel>
#include <QScopedPointer>
#include "kitemmodels_export.h"
class KRearrangeColumnsProxyModelPrivate;
/**
* @class KRearrangeColumnsProxyModel krearrangecolumnsproxymodel.h KRearrangeColumnsProxyModel
*
* This proxy shows specific columns from the source model, in any order.
* This allows to reorder columns, as well as not showing all of them.
*
* The proxy supports source models that have a tree structure.
* It also supports editing, and propagating changes from the source model.
*
* Showing the same source column more than once is not supported.
*
* Author: David Faure, KDAB
* @since 5.12
*/
class KITEMMODELS_EXPORT KRearrangeColumnsProxyModel : public QIdentityProxyModel
{
Q_OBJECT
public:
/**
* Creates a KRearrangeColumnsProxyModel proxy.
* Remember to call setSourceModel afterwards.
*/
explicit KRearrangeColumnsProxyModel(QObject *parent = nullptr);
/**
* Destructor.
*/
~KRearrangeColumnsProxyModel();
// API
/**
* Set the chosen source columns, in the desired order for the proxy columns
* columns[proxyColumn=0] is the source column to show in the first proxy column, etc.
*
* Example: QVector<int>() << 2 << 1;
* This examples configures the proxy to hide column 0, show column 2 from the source model,
* then show column 1 from the source model.
*/
void setSourceColumns(const QVector<int> &columns);
// Implementation
/// @reimp
int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
/// @reimp
int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
/// @reimp
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
/// @reimp
QModelIndex parent(const QModelIndex &child) const Q_DECL_OVERRIDE;
/// @reimp
QModelIndex mapFromSource(const QModelIndex &sourceIndex) const Q_DECL_OVERRIDE;
/// @reimp
QModelIndex mapToSource(const QModelIndex &proxyIndex) const Q_DECL_OVERRIDE;
/// @reimp
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE;
/// @reimp
QModelIndex sibling(int row, int column, const QModelIndex &idx) const Q_DECL_OVERRIDE;
private:
int proxyColumnForSourceColumn(int sourceColumn) const;
int sourceColumnForProxyColumn(int proxyColumn) const;
private:
const QScopedPointer<KRearrangeColumnsProxyModelPrivate> d_ptr;
};
#endif
|