diff options
Diffstat (limited to 'framework/src/domain/mimetreeparser/otp/textplain.cpp')
-rw-r--r-- | framework/src/domain/mimetreeparser/otp/textplain.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/framework/src/domain/mimetreeparser/otp/textplain.cpp b/framework/src/domain/mimetreeparser/otp/textplain.cpp new file mode 100644 index 00000000..d3437f04 --- /dev/null +++ b/framework/src/domain/mimetreeparser/otp/textplain.cpp | |||
@@ -0,0 +1,78 @@ | |||
1 | /* | ||
2 | Copyright (c) 2016 Sandro Knauß <sknauss@kde.org> | ||
3 | |||
4 | This library is free software; you can redistribute it and/or modify it | ||
5 | under the terms of the GNU Library General Public License as published by | ||
6 | the Free Software Foundation; either version 2 of the License, or (at your | ||
7 | option) any later version. | ||
8 | |||
9 | This library is distributed in the hope that it will be useful, but WITHOUT | ||
10 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
11 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public | ||
12 | License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU Library General Public License | ||
15 | along with this library; see the file COPYING.LIB. If not, write to the | ||
16 | Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | ||
17 | 02110-1301, USA. | ||
18 | */ | ||
19 | |||
20 | #include "textplain.h" | ||
21 | |||
22 | #include "attachmentstrategy.h" | ||
23 | #include "objecttreeparser.h" | ||
24 | #include "messagepart.h" | ||
25 | |||
26 | #include <KMime/Content> | ||
27 | |||
28 | #include "mimetreeparser_debug.h" | ||
29 | |||
30 | using namespace MimeTreeParser; | ||
31 | |||
32 | const TextPlainBodyPartFormatter *TextPlainBodyPartFormatter::self; | ||
33 | |||
34 | const Interface::BodyPartFormatter *TextPlainBodyPartFormatter::create() | ||
35 | { | ||
36 | if (!self) { | ||
37 | self = new TextPlainBodyPartFormatter(); | ||
38 | } | ||
39 | return self; | ||
40 | } | ||
41 | Interface::BodyPartFormatter::Result TextPlainBodyPartFormatter::format(Interface::BodyPart *part, HtmlWriter *writer) const | ||
42 | { | ||
43 | Q_UNUSED(writer) | ||
44 | const auto p = process(*part); | ||
45 | const auto mp = static_cast<MessagePart *>(p.data()); | ||
46 | if (mp) { | ||
47 | mp->html(false); | ||
48 | return Ok; | ||
49 | } | ||
50 | return Failed; | ||
51 | } | ||
52 | |||
53 | Interface::MessagePart::Ptr TextPlainBodyPartFormatter::process(Interface::BodyPart &part) const | ||
54 | { | ||
55 | KMime::Content *node = part.content(); | ||
56 | const bool isFirstTextPart = (node->topLevel()->textContent() == node); | ||
57 | |||
58 | QString label = NodeHelper::fileName(node); | ||
59 | |||
60 | const bool bDrawFrame = !isFirstTextPart | ||
61 | && !part.objectTreeParser()->showOnlyOneMimePart() | ||
62 | && !label.isEmpty(); | ||
63 | const QString fileName = part.nodeHelper()->writeNodeToTempFile(node); | ||
64 | |||
65 | TextMessagePart::Ptr mp; | ||
66 | if (isFirstTextPart) { | ||
67 | mp = TextMessagePart::Ptr(new TextMessagePart(part.objectTreeParser(), node, bDrawFrame, fileName.isEmpty(), part.source()->decryptMessage())); | ||
68 | } else { | ||
69 | mp = TextMessagePart::Ptr(new AttachmentMessagePart(part.objectTreeParser(), node, bDrawFrame, fileName.isEmpty(), part.source()->decryptMessage())); | ||
70 | } | ||
71 | |||
72 | part.processResult()->setInlineSignatureState(mp->signatureState()); | ||
73 | part.processResult()->setInlineEncryptionState(mp->encryptionState()); | ||
74 | |||
75 | part.nodeHelper()->setNodeDisplayedEmbedded(node, true); | ||
76 | |||
77 | return mp; | ||
78 | } | ||