File indexing completed on 2025-03-09 04:54:39

0001 /*
0002     SPDX-FileCopyrightText: 2007 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QAbstractItemModel>
0010 #include <memory>
0011 namespace KMime
0012 {
0013 class Content;
0014 }
0015 
0016 namespace MessageViewer
0017 {
0018 /**
0019   A model representing the mime part tree of a message.
0020 */
0021 class MimeTreeModel : public QAbstractItemModel
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     enum Role {
0027         ContentIndexRole = Qt::UserRole + 1,
0028         ContentRole,
0029         MimeTypeRole,
0030         MainBodyPartRole,
0031         AlternativeBodyPartRole,
0032         UserRole = Qt::UserRole + 100,
0033     };
0034     explicit MimeTreeModel(QObject *parent = nullptr);
0035     ~MimeTreeModel() override;
0036 
0037     void setRoot(KMime::Content *root);
0038 
0039     KMime::Content *root();
0040 
0041     [[nodiscard]] QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
0042     [[nodiscard]] QModelIndex parent(const QModelIndex &index) const override;
0043     [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0044     [[nodiscard]] int columnCount(const QModelIndex &parent = QModelIndex()) const override;
0045     [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
0046     [[nodiscard]] QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
0047     QMimeData *mimeData(const QModelIndexList &indexes) const override;
0048     [[nodiscard]] Qt::ItemFlags flags(const QModelIndex &index) const override;
0049     [[nodiscard]] QStringList mimeTypes() const override;
0050 
0051 private:
0052     class MimeTreeModelPrivate;
0053     std::unique_ptr<MimeTreeModelPrivate> const d;
0054 };
0055 }