diff --git a/mimetreeparser/src/viewer/messagepart.h b/mimetreeparser/src/viewer/messagepart.h --- a/mimetreeparser/src/viewer/messagepart.h +++ b/mimetreeparser/src/viewer/messagepart.h @@ -106,14 +106,22 @@ /** @see NodeHelper::asHREF */ QString attachmentLink() const; + /** Returns a string respresentation of an URL that can be used + * to invoke a BodyPartURLHandler for this body part. + */ + QString makeLink(const QString &path) const; + void setIsRoot(bool root); bool isRoot() const; virtual bool isHtml() const; virtual bool isHidden() const; PartMetaData *partMetaData() const; + Interface::BodyPartMemento *memento() const; + void setMemento(Interface::BodyPartMemento *memento); + /* only a function that should be removed if the refactoring is over */ virtual void fix() const; diff --git a/mimetreeparser/src/viewer/messagepart.cpp b/mimetreeparser/src/viewer/messagepart.cpp --- a/mimetreeparser/src/viewer/messagepart.cpp +++ b/mimetreeparser/src/viewer/messagepart.cpp @@ -47,6 +47,7 @@ #include #include +#include using namespace MimeTreeParser; @@ -99,6 +100,16 @@ return &d->mMetaData; } +Interface::BodyPartMemento* MessagePart::memento() const +{ + return nodeHelper()->bodyPartMemento(content(), "__plugin__"); +} + +void MessagePart::setMemento(Interface::BodyPartMemento *memento) +{ + nodeHelper()->setBodyPartMemento(content(), "__plugin__", memento); +} + KMime::Content *MessagePart::content() const { return d->mNode; @@ -134,6 +145,18 @@ return mOtp->nodeHelper()->asHREF(content(), QStringLiteral("body")); } +QString MessagePart::makeLink(const QString &path) const +{ + // FIXME: use a PRNG for the first arg, instead of a serial number + static int serial = 0; + if (path.isEmpty()) { + return {}; + } + return QStringLiteral("x-kmail:/bodypart/%1/%2/%3") + .arg(serial++).arg(content()->index().toString()) + .arg(QString::fromLatin1(QUrl::toPercentEncoding(path, "/"))); +} + void MessagePart::setIsRoot(bool root) { d->mRoot = root; diff --git a/mimetreeparser/src/viewer/partnodebodypart.h b/mimetreeparser/src/viewer/partnodebodypart.h --- a/mimetreeparser/src/viewer/partnodebodypart.h +++ b/mimetreeparser/src/viewer/partnodebodypart.h @@ -54,7 +54,7 @@ public: explicit PartNodeBodyPart(ObjectTreeParser *otp, ProcessResult *result, KMime::Content *topLevelContent, KMime::Content *content, NodeHelper *nodeHelper); - QString makeLink(const QString &path) const override; + MIMETREEPARSER_DEPRECATED QString makeLink(const QString &path) const override; QString asText() const override; QByteArray asBinary() const override; QString contentTypeParameter(const char *param) const override;