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 }