diff options
-rw-r--r-- | framework/src/domain/mime/partmodel.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
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: | |||
32 | PartModelPrivate(PartModel *q_ptr, const std::shared_ptr<MimeTreeParser::ObjectTreeParser> &parser); | 32 | PartModelPrivate(PartModel *q_ptr, const std::shared_ptr<MimeTreeParser::ObjectTreeParser> &parser); |
33 | ~PartModelPrivate(); | 33 | ~PartModelPrivate(); |
34 | 34 | ||
35 | void createTree(); | 35 | void findEncapsulated(const MimeTreeParser::EncapsulatedRfc822MessagePart::Ptr &e); |
36 | PartModel *q; | 36 | PartModel *q; |
37 | QVector<MimeTreeParser::MessagePartPtr> mParts; | 37 | QVector<MimeTreeParser::MessagePartPtr> mParts; |
38 | QHash<MimeTreeParser::MessagePart*, QVector<MimeTreeParser::MessagePartPtr>> mEncapsulatedParts; | 38 | QHash<MimeTreeParser::MessagePart*, QVector<MimeTreeParser::MessagePartPtr>> mEncapsulatedParts; |
@@ -45,17 +45,25 @@ PartModelPrivate::PartModelPrivate(PartModel *q_ptr, const std::shared_ptr<MimeT | |||
45 | , mParser(parser) | 45 | , mParser(parser) |
46 | { | 46 | { |
47 | mParts = mParser->collectContentParts(); | 47 | mParts = mParser->collectContentParts(); |
48 | qWarning() << "Collected content parts: " << mParts.size(); | ||
49 | for (auto p : mParts) { | 48 | for (auto p : mParts) { |
50 | if (auto e = p.dynamicCast<MimeTreeParser::EncapsulatedRfc822MessagePart>()) { | 49 | if (auto e = p.dynamicCast<MimeTreeParser::EncapsulatedRfc822MessagePart>()) { |
51 | mEncapsulatedParts[e.data()] = mParser->collectContentParts(e); | 50 | findEncapsulated(e); |
52 | for (auto subPart : mEncapsulatedParts[e.data()]) { | ||
53 | mParents[subPart.data()] = e.data(); | ||
54 | } | ||
55 | } | 51 | } |
56 | } | 52 | } |
57 | } | 53 | } |
58 | 54 | ||
55 | //Recursively find encapsulated messages | ||
56 | void PartModelPrivate::findEncapsulated(const MimeTreeParser::EncapsulatedRfc822MessagePart::Ptr &e) | ||
57 | { | ||
58 | mEncapsulatedParts[e.data()] = mParser->collectContentParts(e); | ||
59 | for (auto subPart : mEncapsulatedParts[e.data()]) { | ||
60 | mParents[subPart.data()] = e.data(); | ||
61 | if (auto encapsulatedSub = subPart.dynamicCast<MimeTreeParser::EncapsulatedRfc822MessagePart>()) { | ||
62 | findEncapsulated(encapsulatedSub); | ||
63 | } | ||
64 | } | ||
65 | }; | ||
66 | |||
59 | PartModelPrivate::~PartModelPrivate() | 67 | PartModelPrivate::~PartModelPrivate() |
60 | { | 68 | { |
61 | } | 69 | } |