File indexing completed on 2024-06-16 05:01:24

0001 /* Copyright (C) 2006 - 2016 Jan Kundrát <jkt@kde.org>
0002 
0003    This file is part of the Trojita Qt IMAP e-mail client,
0004    http://trojita.flaska.net/
0005 
0006    This program is free software; you can redistribute it and/or
0007    modify it under the terms of the GNU General Public License as
0008    published by the Free Software Foundation; either version 2 of
0009    the License or (at your option) version 3 or any later version
0010    accepted by the membership of KDE e.V. (or its successor approved
0011    by the membership of KDE e.V.), which shall act as a proxy
0012    defined in Section 14 of version 3 of the license.
0013 
0014    This program is distributed in the hope that it will be useful,
0015    but WITHOUT ANY WARRANTY; without even the implied warranty of
0016    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0017    GNU General Public License for more details.
0018 
0019    You should have received a copy of the GNU General Public License
0020    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0021 */
0022 
0023 #ifndef TROJITA_CRYPTO_LOCAL_MIME_PARSER_H
0024 #define TROJITA_CRYPTO_LOCAL_MIME_PARSER_H
0025 
0026 #include <QObject>
0027 #include "Cryptography/PartReplacer.h"
0028 
0029 namespace Cryptography {
0030 
0031 /** @short Local parsing of MIME messages */
0032 class LocalMimeMessageParser: public PartReplacer {
0033 public:
0034     LocalMimeMessageParser();
0035     ~LocalMimeMessageParser() override;
0036 
0037     MessagePart::Ptr createPart(MessageModel *model, MessagePart *parentPart, MessagePart::Ptr original,
0038                                 const QModelIndex &sourceItemIndex, const QModelIndex &proxyParentIndex) override;
0039 
0040 };
0041 
0042 class LocallyParsedMimePart: public QObject, public LocalMessagePart {
0043     Q_OBJECT
0044 public:
0045     LocallyParsedMimePart(MessageModel *model, MessagePart *parentPart, Ptr originalPart,
0046                           const QModelIndex &sourceItemIndex, const QModelIndex &proxyParentIndex);
0047 
0048     QVariant data(int role) const override;
0049 
0050 public slots:
0051     void messageMaybeAvailable(const QModelIndex &topLeft, const QModelIndex &bottomRight);
0052 private:
0053 #ifdef MIME_TREE_DEBUG
0054     QByteArray dumpLocalInfo() const override;
0055 #endif
0056 
0057     MessageModel *m_model;
0058     QPersistentModelIndex m_sourceHeaderIndex, m_sourceTextIndex, m_proxyParentIndex;
0059 };
0060 
0061 }
0062 #endif