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

0001 /*
0002   SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org>
0003 
0004   SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 #pragma once
0007 
0008 #include "bufferedhtmlwriter.h"
0009 #include <QObject>
0010 
0011 #include <QByteArray>
0012 #include <QString>
0013 class QTemporaryFile;
0014 namespace MessageViewer
0015 {
0016 class MailWebEngineView;
0017 }
0018 
0019 namespace MessageViewer
0020 {
0021 class WebEnginePartHtmlWriter : public QObject, public BufferedHtmlWriter
0022 {
0023     Q_OBJECT
0024 public:
0025     explicit WebEnginePartHtmlWriter(MailWebEngineView *view, QObject *parent = nullptr);
0026     ~WebEnginePartHtmlWriter() override;
0027 
0028     void begin() override;
0029     void end() override;
0030     void reset() override;
0031     void embedPart(const QByteArray &contentId, const QString &url) override;
0032     void setExtraHead(const QString &str) override;
0033 
0034     void setStyleBody(const QString &styleBody) override;
0035 
0036 Q_SIGNALS:
0037     void finished();
0038 
0039 private:
0040     void insertExtraHead();
0041     void insertBodyStyle();
0042 
0043 private:
0044     MailWebEngineView *const mHtmlView;
0045     QString mExtraHead;
0046     QString mStyleBody;
0047     enum State { Begun, Queued, Ended } mState = Ended;
0048     QTemporaryFile *mTempFile = nullptr;
0049 };
0050 }