File indexing completed on 2024-05-26 05:25:13
0001 /* 0002 SPDX-FileCopyrightText: 2009-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "mailcommon_export.h" 0010 0011 #include <Akonadi/Collection> 0012 #include <Akonadi/EntityRightsFilterModel> 0013 #include <memory> 0014 0015 namespace MailCommon 0016 { 0017 /** 0018 * @brief The FolderTreeWidgetProxyModel class 0019 * @author Laurent Montel <montel@kde.org> 0020 */ 0021 class MAILCOMMON_EXPORT FolderTreeWidgetProxyModel : public Akonadi::EntityRightsFilterModel 0022 { 0023 Q_OBJECT 0024 0025 public: 0026 enum FolderTreeWidgetProxyModelOption { None = 0, HideVirtualFolder = 1, HideSpecificFolder = 2, HideOutboxFolder = 4 }; 0027 Q_DECLARE_FLAGS(FolderTreeWidgetProxyModelOptions, FolderTreeWidgetProxyModelOption) 0028 0029 explicit FolderTreeWidgetProxyModel(QObject *parent = nullptr, FolderTreeWidgetProxyModelOptions = FolderTreeWidgetProxyModel::None); 0030 0031 ~FolderTreeWidgetProxyModel() override; 0032 0033 [[nodiscard]] Qt::ItemFlags flags(const QModelIndex &index) const override; 0034 0035 [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0036 0037 void setEnabledCheck(bool enable); 0038 [[nodiscard]] bool enabledCheck() const; 0039 0040 void setHideVirtualFolder(bool exclude); 0041 [[nodiscard]] bool hideVirtualFolder() const; 0042 0043 void setHideSpecificFolder(bool hide); 0044 [[nodiscard]] bool hideSpecificFolder() const; 0045 0046 void setHideOutboxFolder(bool hide); 0047 [[nodiscard]] bool hideOutboxFolder() const; 0048 0049 void addContentMimeTypeInclusionFilter(const QString &mimeTypes); 0050 0051 void updatePalette(); 0052 void readConfig(); 0053 0054 void setWarningThreshold(qreal threshold); 0055 0056 protected: 0057 bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; 0058 0059 private: 0060 class FolderTreeWidgetProxyModelPrivate; 0061 std::unique_ptr<FolderTreeWidgetProxyModelPrivate> const d; 0062 }; 0063 }