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 }