From 46113e15cae8098a35050cd9e9e75d4c41cf7a0e Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 22 Jun 2017 09:49:31 +0200 Subject: Recursively find encapsulated messages. Necessary to find encapsulated in encapsulated message. --- framework/src/domain/mime/partmodel.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'framework') diff --git a/framework/src/domain/mime/partmodel.cpp b/framework/src/domain/mime/partmodel.cpp index c6d7dcf5..eeeb391d 100644 --- a/framework/src/domain/mime/partmodel.cpp +++ b/framework/src/domain/mime/partmodel.cpp @@ -32,7 +32,7 @@ public: PartModelPrivate(PartModel *q_ptr, const std::shared_ptr &parser); ~PartModelPrivate(); - void createTree(); + void findEncapsulated(const MimeTreeParser::EncapsulatedRfc822MessagePart::Ptr &e); PartModel *q; QVector mParts; QHash> mEncapsulatedParts; @@ -45,17 +45,25 @@ PartModelPrivate::PartModelPrivate(PartModel *q_ptr, const std::shared_ptrcollectContentParts(); - qWarning() << "Collected content parts: " << mParts.size(); for (auto p : mParts) { if (auto e = p.dynamicCast()) { - mEncapsulatedParts[e.data()] = mParser->collectContentParts(e); - for (auto subPart : mEncapsulatedParts[e.data()]) { - mParents[subPart.data()] = e.data(); - } + findEncapsulated(e); } } } +//Recursively find encapsulated messages +void PartModelPrivate::findEncapsulated(const MimeTreeParser::EncapsulatedRfc822MessagePart::Ptr &e) +{ + mEncapsulatedParts[e.data()] = mParser->collectContentParts(e); + for (auto subPart : mEncapsulatedParts[e.data()]) { + mParents[subPart.data()] = e.data(); + if (auto encapsulatedSub = subPart.dynamicCast()) { + findEncapsulated(encapsulatedSub); + } + } +}; + PartModelPrivate::~PartModelPrivate() { } -- cgit v1.2.3