File indexing completed on 2024-05-12 05:10:48
0001 /* 0002 SPDX-FileCopyrightText: 2010 Klarälvdalens Datakonsult AB, 0003 a KDAB Group company, info@kdab.net 0004 SPDX-FileContributor: Bertjan Broeksema <broeksema@kde.org> 0005 0006 SPDX-License-Identifier: LGPL-2.1-or-later 0007 */ 0008 0009 #pragma once 0010 0011 #include <QSortFilterProxyModel> 0012 template<typename T> 0013 class QList; 0014 0015 namespace Akonadi 0016 { 0017 class KColumnFilterProxyModelPrivate; 0018 0019 /** 0020 Filter model to make only certain columns of a model visible. By default all 0021 columns are visible. 0022 */ 0023 class KColumnFilterProxyModel : public QSortFilterProxyModel 0024 { 0025 Q_OBJECT 0026 public: 0027 explicit KColumnFilterProxyModel(QObject *parent = nullptr); 0028 ~KColumnFilterProxyModel() override; 0029 0030 /** 0031 Returns a vector containing the visible columns. If the vector is empty, all 0032 columns are visible. 0033 */ 0034 [[nodiscard]] QList<int> visbileColumns() const; 0035 0036 /** 0037 Convenience function. Has the same effect as: 0038 @code 0039 setVisibleColumns( QList<int>() << column ); 0040 @endcode 0041 @param column the column to set as visible 0042 @see setVisbileColumns 0043 */ 0044 void setVisibleColumn(int column); 0045 0046 /** 0047 Change the visible columns. Pass an empty vector to make all columns visible. 0048 @param visibleColumns the vector changing visible columns 0049 */ 0050 void setVisibleColumns(const QList<int> &visibleColumns); 0051 0052 protected: 0053 bool filterAcceptsColumn(int column, const QModelIndex &parent) const override; 0054 0055 private: 0056 QList<int> m_visibleColumns; 0057 }; 0058 }