1 /*
2    SPDX-FileCopyrightText: 2017-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include <KMime/Message>
10 #include <QObject>
11 
12 struct FillComposerJobSettings {
13     FillComposerJobSettings() = default;
14 
FillComposerJobSettingsFillComposerJobSettings15     FillComposerJobSettings(bool hidden,
16                             const QString &to,
17                             const QString &cc,
18                             const QString &bcc,
19                             const QString &subject,
20                             const QString &body,
21                             const QString &attachName,
22                             const QByteArray &attachCte,
23                             const QByteArray &attachData,
24                             const QByteArray &attachType,
25                             const QByteArray &attachSubType,
26                             const QByteArray &attachParamAttr,
27                             const QString &attachParamValue,
28                             const QByteArray &attachContDisp,
29                             const QByteArray &attachCharset,
30                             unsigned int identity,
31                             bool forceShowWindow)
32         : mTo(to)
33         , mCc(cc)
34         , mBcc(bcc)
35         , mSubject(subject)
36         , mBody(body)
37         , mAttachName(attachName)
38         , mAttachCte(attachCte)
39         , mAttachData(attachData)
40         , mAttachType(attachType)
41         , mAttachSubType(attachSubType)
42         , mAttachParamAttr(attachParamAttr)
43         , mAttachParamValue(attachParamValue)
44         , mAttachContDisp(attachContDisp)
45         , mAttachCharset(attachCharset)
46         , mIdentity(identity)
47         , mForceShowWindow(forceShowWindow)
48         , mHidden(hidden)
49     {
50     }
51 
52     QString mTo;
53     QString mCc;
54     QString mBcc;
55     QString mSubject;
56     QString mBody;
57     QString mAttachName;
58     QByteArray mAttachCte;
59     QByteArray mAttachData;
60     QByteArray mAttachType;
61     QByteArray mAttachSubType;
62     QByteArray mAttachParamAttr;
63     QString mAttachParamValue;
64     QByteArray mAttachContDisp;
65     QByteArray mAttachCharset;
66     unsigned int mIdentity = 0;
67     bool mForceShowWindow = false;
68     bool mHidden = false;
69 };
70 
71 class FillComposerJob : public QObject
72 {
73     Q_OBJECT
74 public:
75     explicit FillComposerJob(QObject *parent = nullptr);
76     ~FillComposerJob() override;
77     void start();
78     void setSettings(const FillComposerJobSettings &settings);
79 
80 private:
81     Q_DISABLE_COPY(FillComposerJob)
82     void slotOpenComposer();
83     FillComposerJobSettings mSettings;
84     KMime::Message::Ptr mMsg = nullptr;
85 };
86 
87