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 }