File indexing completed on 2024-05-05 05:13:11

0001 /*
0002     This file is part of Akregator.
0003 
0004     SPDX-FileCopyrightText: 2008 Frank Osterfeld <osterfeld@kde.org>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0
0007 */
0008 
0009 #pragma once
0010 
0011 #include <QList>
0012 #include <QSortFilterProxyModel>
0013 
0014 namespace Akregator
0015 {
0016 class FilterColumnsProxyModel : public QSortFilterProxyModel
0017 {
0018 public:
0019     enum Mode {
0020         Blacklist,
0021         Whitelist,
0022     };
0023 
0024     explicit FilterColumnsProxyModel(QObject *parent = nullptr);
0025 
0026     void setColumnEnabled(int col, bool enabled = true);
0027     [[nodiscard]] bool isColumnEnabled(int col) const;
0028 
0029     [[nodiscard]] Mode mode() const;
0030     void setMode(Mode mode);
0031 
0032 private:
0033     [[nodiscard]] bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const override;
0034 
0035 private:
0036     QList<bool> m_columnStates;
0037     int m_vecSize = 0;
0038     Mode m_mode = Whitelist;
0039 };
0040 } // namespace Akregator