File indexing completed on 2025-01-05 04:54:56

0001 /*
0002     Copyright (c) 2016 Christian Mollekopf <mollekopf@kolabsys.com>
0003 
0004     This library is free software; you can redistribute it and/or modify it
0005     under the terms of the GNU Library General Public License as published by
0006     the Free Software Foundation; either version 2 of the License, or (at your
0007     option) any later version.
0008 
0009     This library is distributed in the hope that it will be useful, but WITHOUT
0010     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0011     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
0012     License for more details.
0013 
0014     You should have received a copy of the GNU Library General Public License
0015     along with this library; see the file COPYING.LIB.  If not, write to the
0016     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
0017     02110-1301, USA.
0018 */
0019 #pragma once
0020 
0021 #include <QObject>
0022 
0023 #include <QAbstractItemModel>
0024 #include <QModelIndex>
0025 
0026 #include <memory>
0027 
0028 namespace MimeTreeParser {
0029     class ObjectTreeParser;
0030 }
0031 class AttachmentModelPrivate;
0032 
0033 class AttachmentModel : public QAbstractItemModel {
0034      Q_OBJECT
0035 public:
0036     AttachmentModel(std::shared_ptr<MimeTreeParser::ObjectTreeParser> parser);
0037     ~AttachmentModel();
0038 
0039 public:
0040     enum Roles {
0041         TypeRole  = Qt::UserRole + 1,
0042         IconRole,
0043         NameRole,
0044         SizeRole,
0045         IsEncryptedRole,
0046         IsSignedRole
0047     };
0048 
0049     QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
0050     QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
0051     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE;
0052     QModelIndex parent(const QModelIndex &index) const Q_DECL_OVERRIDE;
0053     int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
0054     int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
0055 
0056     Q_INVOKABLE bool saveAttachmentToDisk(const QModelIndex &parent);
0057     Q_INVOKABLE bool openAttachment(const QModelIndex &index);
0058 
0059     Q_INVOKABLE bool importPublicKey(const QModelIndex &index);
0060 
0061 private:
0062     std::unique_ptr<AttachmentModelPrivate> d;
0063 };