From 550aa371cbf39d7d0cb735f890b338a3ac6883ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20Knau=C3=9F?= Date: Wed, 20 Jul 2016 10:04:49 +0200 Subject: add encrypted tests --- framework/domain/mimetreeparser/interface.cpp | 55 +++++++++++---------------- 1 file changed, 22 insertions(+), 33 deletions(-) (limited to 'framework/domain/mimetreeparser/interface.cpp') diff --git a/framework/domain/mimetreeparser/interface.cpp b/framework/domain/mimetreeparser/interface.cpp index c239fcc0..e34ffda7 100644 --- a/framework/domain/mimetreeparser/interface.cpp +++ b/framework/domain/mimetreeparser/interface.cpp @@ -18,6 +18,7 @@ */ #include "interface.h" +#include "interface_p.h" #include "stringhtmlwriter.h" #include "objecttreesource.h" @@ -28,7 +29,6 @@ #include #include -#include class PartPrivate { @@ -164,34 +164,42 @@ public: void fillFrom(MimeTreeParser::HtmlMessagePart::Ptr part); void fillFrom(MimeTreeParser::AlternativeMessagePart::Ptr part); - QVector content() const; + QVector content(ContentPart::Type ct) const; ContentPart *q; ContentPart::Types types() const; - + private: - QVector mContent; + QMap> mContent; ContentPart::Types mTypes; }; void ContentPartPrivate::fillFrom(MimeTreeParser::TextMessagePart::Ptr part) { + qDebug() << "jepp"; mTypes = ContentPart::PlainText; foreach (const auto &mp, part->subParts()) { auto content = std::make_shared(mp->text().toLocal8Bit(), q); - mContent.append(content); + mContent[ContentPart::PlainText].append(content); } } void ContentPartPrivate::fillFrom(MimeTreeParser::HtmlMessagePart::Ptr part) { mTypes = ContentPart::Html; + auto content = std::make_shared(part->text().toLocal8Bit(), q); + mContent[ContentPart::Html].append(content); } void ContentPartPrivate::fillFrom(MimeTreeParser::AlternativeMessagePart::Ptr part) { mTypes = ContentPart::Html | ContentPart::PlainText; + + auto content = std::make_shared(part->htmlContent().toLocal8Bit(), q); + mContent[ContentPart::Html].append(content); + content = std::make_shared(part->plaintextContent().toLocal8Bit(), q); + mContent[ContentPart::PlainText].append(content); } ContentPart::Types ContentPartPrivate::types() const @@ -199,14 +207,14 @@ ContentPart::Types ContentPartPrivate::types() const return mTypes; } -QVector ContentPartPrivate::content() const +QVector ContentPartPrivate::content(ContentPart::Type ct) const { - return mContent; + return mContent[ct]; } QVector ContentPart::content(ContentPart::Type ct) const { - return d->content(); + return d->content(ct); } @@ -258,24 +266,6 @@ QByteArray AttachmentPart::type() const return "AttachmentPart"; } -class ParserPrivate -{ -public: - ParserPrivate(Parser *parser); - - void setMessage(const QByteArray &mimeMessage); - void createTree(const MimeTreeParser::MessagePart::Ptr& start, const Part::Ptr& tree); - - Part::Ptr mTree; -private: - Parser *q; - - MimeTreeParser::MessagePart::Ptr mPartTree; - std::shared_ptr mNodeHelper; - QString mHtml; - QMap mEmbeddedPartMap; -}; - ParserPrivate::ParserPrivate(Parser* parser) : q(parser) , mNodeHelper(std::make_shared()) @@ -292,7 +282,6 @@ void ParserPrivate::setMessage(const QByteArray& mimeMessage) // render the mail StringHtmlWriter htmlWriter; - QImage paintDevice; ObjectTreeSource source(&htmlWriter); MimeTreeParser::ObjectTreeParser otp(&source, mNodeHelper.get()); @@ -315,7 +304,11 @@ void ParserPrivate::createTree(const MimeTreeParser::MessagePart::Ptr &start, co const auto alternative = mp.dynamicCast(); const auto html = mp.dynamicCast(); const auto attachment = mp.dynamicCast(); - if (text) { + if (attachment) { + auto part = std::make_shared(); + part->d->fillFrom(attachment); + mTree->d->appendSubPart(part); + } else if (text) { auto part = std::make_shared(); part->d->fillFrom(text); mTree->d->appendSubPart(part); @@ -327,10 +320,6 @@ void ParserPrivate::createTree(const MimeTreeParser::MessagePart::Ptr &start, co auto part = std::make_shared(); part->d->fillFrom(html); mTree->d->appendSubPart(part); - } else if (attachment) { - auto part = std::make_shared(); - part->d->fillFrom(attachment); - mTree->d->appendSubPart(part); } else { createTree(m, tree); } @@ -349,7 +338,7 @@ Parser::~Parser() ContentPart::Ptr Parser::collectContentPart(const Part::Ptr &start) const { - const auto ret = collect(start, [](const Part::Ptr &p){return p->type() == "ContentPart";}, [](const ContentPart::Ptr &p){return true;}); + const auto ret = collect(start, [](const Part::Ptr &p){return p->type() == "ContentPart";}, [](const ContentPart::Ptr &p){return true;}); if (ret.size() > 0) { return ret[0]; }; -- cgit v1.2.3