diff options
author | Sandro Knauß <sknauss@kde.org> | 2016-10-17 13:05:43 +0200 |
---|---|---|
committer | Sandro Knauß <sknauss@kde.org> | 2016-10-17 13:05:43 +0200 |
commit | b7a02699eefd84c68ff602bfea91640faec5c4ef (patch) | |
tree | 68b62e0ea267ae6fc94c4bda52d375ab8d1af551 /framework/domain/mimetreeparser/interface.cpp | |
parent | 988f0fe074faef56c053742fb582d0bb7b980d90 (diff) | |
download | kube-b7a02699eefd84c68ff602bfea91640faec5c4ef.tar.gz kube-b7a02699eefd84c68ff602bfea91640faec5c4ef.zip |
find part by cid
Diffstat (limited to 'framework/domain/mimetreeparser/interface.cpp')
-rw-r--r-- | framework/domain/mimetreeparser/interface.cpp | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/framework/domain/mimetreeparser/interface.cpp b/framework/domain/mimetreeparser/interface.cpp index ab56f800..c2fd1e65 100644 --- a/framework/domain/mimetreeparser/interface.cpp +++ b/framework/domain/mimetreeparser/interface.cpp | |||
@@ -56,6 +56,14 @@ MailMime::MailMime() | |||
56 | { | 56 | { |
57 | } | 57 | } |
58 | 58 | ||
59 | QByteArray MailMime::cid() const | ||
60 | { | ||
61 | if (!d->mNode || !d->mNode->contentID()) { | ||
62 | return QByteArray(); | ||
63 | } | ||
64 | return d->mNode->contentID()->identifier(); | ||
65 | } | ||
66 | |||
59 | bool MailMime::isFirstTextPart() const | 67 | bool MailMime::isFirstTextPart() const |
60 | { | 68 | { |
61 | if (!d->mNode || !d->mNode->topLevel()) { | 69 | if (!d->mNode || !d->mNode->topLevel()) { |
@@ -750,9 +758,16 @@ Parser::~Parser() | |||
750 | { | 758 | { |
751 | } | 759 | } |
752 | 760 | ||
753 | QUrl Parser::getPart(const QByteArray &cid) | 761 | Part::Ptr Parser::getPart(const QUrl &url) |
754 | { | 762 | { |
755 | return d->mEmbeddedPartMap.value(cid); | 763 | if (url.scheme() == QStringLiteral("cid") && !url.path().isEmpty()) { |
764 | const auto cid = url.path(); | ||
765 | return find(d->mTree, [&cid](const Part::Ptr &p){ | ||
766 | const auto mime = p->mailMime(); | ||
767 | return mime->cid() == cid; | ||
768 | }); | ||
769 | } | ||
770 | return Part::Ptr(); | ||
756 | } | 771 | } |
757 | 772 | ||
758 | QVector<Part::Ptr> Parser::collectContentParts() const | 773 | QVector<Part::Ptr> Parser::collectContentParts() const |
@@ -857,6 +872,7 @@ QVector<Part::Ptr> Parser::collectAttachmentParts() const | |||
857 | return true; | 872 | return true; |
858 | }); | 873 | }); |
859 | } | 874 | } |
875 | |||
860 | QVector<Part::Ptr> Parser::collect(const Part::Ptr &start, std::function<bool(const Part::Ptr &)> select, std::function<bool(const Content::Ptr &)> filter) const | 876 | QVector<Part::Ptr> Parser::collect(const Part::Ptr &start, std::function<bool(const Part::Ptr &)> select, std::function<bool(const Content::Ptr &)> filter) const |
861 | { | 877 | { |
862 | QVector<Part::Ptr> ret; | 878 | QVector<Part::Ptr> ret; |
@@ -879,3 +895,17 @@ QVector<Part::Ptr> Parser::collect(const Part::Ptr &start, std::function<bool(co | |||
879 | } | 895 | } |
880 | return ret; | 896 | return ret; |
881 | } | 897 | } |
898 | |||
899 | Part::Ptr Parser::find(const Part::Ptr &start, std::function<bool(const Part::Ptr &)> select) const | ||
900 | { | ||
901 | foreach (const auto &part, start->subParts()) { | ||
902 | if (select(part)) { | ||
903 | return part; | ||
904 | } | ||
905 | const auto ret = find(part, select); | ||
906 | if (ret) { | ||
907 | return ret; | ||
908 | } | ||
909 | } | ||
910 | return Part::Ptr(); | ||
911 | } | ||