diff options
Diffstat (limited to 'framework/src')
-rw-r--r-- | framework/src/CMakeLists.txt | 2 | ||||
-rw-r--r-- | framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp | 13 | ||||
-rw-r--r-- | framework/src/domain/mime/tests/mailtemplatetest.cpp | 13 |
3 files changed, 27 insertions, 1 deletions
diff --git a/framework/src/CMakeLists.txt b/framework/src/CMakeLists.txt index b935fbed..75357b68 100644 --- a/framework/src/CMakeLists.txt +++ b/framework/src/CMakeLists.txt | |||
@@ -47,6 +47,8 @@ qt5_use_modules(frameworkplugin Core Quick Qml WebEngineWidgets Test) | |||
47 | target_link_libraries(frameworkplugin sink kube_otp KF5::Codecs KF5::Package KF5::Contacts KAsync) | 47 | target_link_libraries(frameworkplugin sink kube_otp KF5::Codecs KF5::Package KF5::Contacts KAsync) |
48 | install(TARGETS frameworkplugin DESTINATION ${FRAMEWORK_INSTALL_DIR}) | 48 | install(TARGETS frameworkplugin DESTINATION ${FRAMEWORK_INSTALL_DIR}) |
49 | 49 | ||
50 | set(BUILD_TESTING ON) | ||
51 | |||
50 | add_subdirectory(domain/mime/tests) | 52 | add_subdirectory(domain/mime/tests) |
51 | add_subdirectory(domain/mime/mimetreeparser) | 53 | add_subdirectory(domain/mime/mimetreeparser) |
52 | 54 | ||
diff --git a/framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp b/framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp index 7e2be0e4..fc1b9793 100644 --- a/framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp +++ b/framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp | |||
@@ -6,6 +6,7 @@ | |||
6 | Copyright (C) 2002-2004 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net | 6 | Copyright (C) 2002-2004 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net |
7 | Copyright (c) 2009 Andras Mantia <andras@kdab.net> | 7 | Copyright (c) 2009 Andras Mantia <andras@kdab.net> |
8 | Copyright (c) 2015 Sandro Knauß <sknauss@kde.org> | 8 | Copyright (c) 2015 Sandro Knauß <sknauss@kde.org> |
9 | Copyright (c) 2017 Christian Mollekopf <mollekopf@kolabsystems.com> | ||
9 | 10 | ||
10 | KMail is free software; you can redistribute it and/or modify it | 11 | KMail is free software; you can redistribute it and/or modify it |
11 | under the terms of the GNU General Public License, version 2, as | 12 | under the terms of the GNU General Public License, version 2, as |
@@ -134,6 +135,9 @@ QString ObjectTreeParser::plainTextContent() | |||
134 | if (dynamic_cast<MimeTreeParser::TextMessagePart*>(part.data())) { | 135 | if (dynamic_cast<MimeTreeParser::TextMessagePart*>(part.data())) { |
135 | return true; | 136 | return true; |
136 | } | 137 | } |
138 | if (dynamic_cast<MimeTreeParser::AlternativeMessagePart*>(part.data())) { | ||
139 | return true; | ||
140 | } | ||
137 | return false; | 141 | return false; |
138 | }); | 142 | }); |
139 | for (const auto &part : plainParts) { | 143 | for (const auto &part : plainParts) { |
@@ -155,10 +159,17 @@ QString ObjectTreeParser::htmlContent() | |||
155 | if (dynamic_cast<MimeTreeParser::HtmlMessagePart*>(part.data())) { | 159 | if (dynamic_cast<MimeTreeParser::HtmlMessagePart*>(part.data())) { |
156 | return true; | 160 | return true; |
157 | } | 161 | } |
162 | if (dynamic_cast<MimeTreeParser::AlternativeMessagePart*>(part.data())) { | ||
163 | return true; | ||
164 | } | ||
158 | return false; | 165 | return false; |
159 | }); | 166 | }); |
160 | for (const auto &part : contentParts) { | 167 | for (const auto &part : contentParts) { |
161 | content += part->text(); | 168 | if (auto p = dynamic_cast<MimeTreeParser::AlternativeMessagePart*>(part.data())) { |
169 | content += p->htmlContent(); | ||
170 | } else { | ||
171 | content += part->text(); | ||
172 | } | ||
162 | } | 173 | } |
163 | } | 174 | } |
164 | return content; | 175 | return content; |
diff --git a/framework/src/domain/mime/tests/mailtemplatetest.cpp b/framework/src/domain/mime/tests/mailtemplatetest.cpp index 4dc8e2bd..e9752c9e 100644 --- a/framework/src/domain/mime/tests/mailtemplatetest.cpp +++ b/framework/src/domain/mime/tests/mailtemplatetest.cpp | |||
@@ -93,6 +93,19 @@ private slots: | |||
93 | QVERIFY(content.contains("i noticed a new branch")); | 93 | QVERIFY(content.contains("i noticed a new branch")); |
94 | } | 94 | } |
95 | 95 | ||
96 | void testMultipartAlternative() | ||
97 | { | ||
98 | auto msg = readMail("alternative.mbox"); | ||
99 | KMime::Message::Ptr result; | ||
100 | MailTemplates::reply(msg, [&] (const KMime::Message::Ptr &r) { | ||
101 | result = r; | ||
102 | }); | ||
103 | QTRY_VERIFY(result); | ||
104 | auto content = removeFirstLine(result->body()); | ||
105 | QVERIFY(!content.isEmpty()); | ||
106 | QCOMPARE(unquote(content), QLatin1String("If you can see this text it means that your email client couldn't display our newsletter properly.\nPlease visit this link to view the newsletter on our website: http://www.gog.com/newsletter/\n")); | ||
107 | } | ||
108 | |||
96 | }; | 109 | }; |
97 | 110 | ||
98 | QTEST_MAIN(MailTemplateTest) | 111 | QTEST_MAIN(MailTemplateTest) |