diff options
-rw-r--r-- | framework/qml/MailViewer.qml | 11 | ||||
-rw-r--r-- | framework/src/domain/mime/messageparser.cpp | 8 | ||||
-rw-r--r-- | framework/src/domain/mime/messageparser.h | 3 | ||||
-rw-r--r-- | framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp | 31 | ||||
-rw-r--r-- | framework/src/domain/mime/mimetreeparser/objecttreeparser.h | 1 |
5 files changed, 41 insertions, 13 deletions
diff --git a/framework/qml/MailViewer.qml b/framework/qml/MailViewer.qml index ef0cfa78..d18ed8e6 100644 --- a/framework/qml/MailViewer.qml +++ b/framework/qml/MailViewer.qml | |||
@@ -447,6 +447,17 @@ Rectangle { | |||
447 | height: childrenRect.height | 447 | height: childrenRect.height |
448 | 448 | ||
449 | TextEdit { | 449 | TextEdit { |
450 | id: structure | ||
451 | width: parent.width | ||
452 | readOnly: true | ||
453 | selectByMouse: true | ||
454 | textFormat: TextEdit.PlainText | ||
455 | wrapMode: TextEdit.Wrap | ||
456 | height: implicitHeight | ||
457 | text: messageParser.structureAsString | ||
458 | } | ||
459 | |||
460 | TextEdit { | ||
450 | id: rawContent | 461 | id: rawContent |
451 | width: parent.width | 462 | width: parent.width |
452 | readOnly: true | 463 | readOnly: true |
diff --git a/framework/src/domain/mime/messageparser.cpp b/framework/src/domain/mime/messageparser.cpp index bc7535ec..2c190c80 100644 --- a/framework/src/domain/mime/messageparser.cpp +++ b/framework/src/domain/mime/messageparser.cpp | |||
@@ -68,6 +68,14 @@ QString MessageParser::rawContent() const | |||
68 | return mRawContent; | 68 | return mRawContent; |
69 | } | 69 | } |
70 | 70 | ||
71 | QString MessageParser::structureAsString() const | ||
72 | { | ||
73 | if (!d->mParser) { | ||
74 | return nullptr; | ||
75 | } | ||
76 | return d->mParser->structureAsString(); | ||
77 | } | ||
78 | |||
71 | QAbstractItemModel *MessageParser::parts() const | 79 | QAbstractItemModel *MessageParser::parts() const |
72 | { | 80 | { |
73 | if (!d->mParser) { | 81 | if (!d->mParser) { |
diff --git a/framework/src/domain/mime/messageparser.h b/framework/src/domain/mime/messageparser.h index ba85973c..72945fea 100644 --- a/framework/src/domain/mime/messageparser.h +++ b/framework/src/domain/mime/messageparser.h | |||
@@ -43,6 +43,7 @@ class KUBE_EXPORT MessageParser : public QObject | |||
43 | Q_PROPERTY (QAbstractItemModel* parts READ parts NOTIFY htmlChanged) | 43 | Q_PROPERTY (QAbstractItemModel* parts READ parts NOTIFY htmlChanged) |
44 | Q_PROPERTY (QAbstractItemModel* attachments READ attachments NOTIFY htmlChanged) | 44 | Q_PROPERTY (QAbstractItemModel* attachments READ attachments NOTIFY htmlChanged) |
45 | Q_PROPERTY (QString rawContent READ rawContent NOTIFY htmlChanged) | 45 | Q_PROPERTY (QString rawContent READ rawContent NOTIFY htmlChanged) |
46 | Q_PROPERTY (QString structureAsString READ structureAsString NOTIFY htmlChanged) | ||
46 | 47 | ||
47 | public: | 48 | public: |
48 | explicit MessageParser(QObject *parent = Q_NULLPTR); | 49 | explicit MessageParser(QObject *parent = Q_NULLPTR); |
@@ -53,7 +54,7 @@ public: | |||
53 | QAbstractItemModel *parts() const; | 54 | QAbstractItemModel *parts() const; |
54 | QAbstractItemModel *attachments() const; | 55 | QAbstractItemModel *attachments() const; |
55 | QString rawContent() const; | 56 | QString rawContent() const; |
56 | 57 | QString structureAsString() const; | |
57 | signals: | 58 | signals: |
58 | void htmlChanged(); | 59 | void htmlChanged(); |
59 | 60 | ||
diff --git a/framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp b/framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp index 0149f388..9fb73ffa 100644 --- a/framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp +++ b/framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp | |||
@@ -51,13 +51,11 @@ | |||
51 | #include <KMime/Headers> | 51 | #include <KMime/Headers> |
52 | #include <KMime/Message> | 52 | #include <KMime/Message> |
53 | 53 | ||
54 | // KDE includes | ||
55 | |||
56 | // Qt includes | ||
57 | #include <QByteArray> | 54 | #include <QByteArray> |
58 | #include <QTextCodec> | 55 | #include <QTextCodec> |
59 | #include <QUrl> | 56 | #include <QUrl> |
60 | #include <QMimeDatabase> | 57 | #include <QMimeDatabase> |
58 | #include <QTextStream> | ||
61 | 59 | ||
62 | using namespace MimeTreeParser; | 60 | using namespace MimeTreeParser; |
63 | 61 | ||
@@ -175,7 +173,7 @@ QString ObjectTreeParser::htmlContent() | |||
175 | return content; | 173 | return content; |
176 | } | 174 | } |
177 | 175 | ||
178 | static void print(KMime::Content *node, const QString prefix = {}) | 176 | static void print(QTextStream &s, KMime::Content *node, const QString prefix = {}) |
179 | { | 177 | { |
180 | QByteArray mediaType("text"); | 178 | QByteArray mediaType("text"); |
181 | QByteArray subType("plain"); | 179 | QByteArray subType("plain"); |
@@ -184,28 +182,37 @@ static void print(KMime::Content *node, const QString prefix = {}) | |||
184 | mediaType = node->contentType()->mediaType(); | 182 | mediaType = node->contentType()->mediaType(); |
185 | subType = node->contentType()->subType(); | 183 | subType = node->contentType()->subType(); |
186 | } | 184 | } |
187 | qWarning() << prefix << "!" << mediaType << subType << "isAttachment: " << KMime::isAttachment(node); | 185 | s << prefix << "!" << mediaType << subType << "isAttachment: " << KMime::isAttachment(node) << "\n"; |
188 | for (const auto c: node->contents()) { | 186 | for (const auto c: node->contents()) { |
189 | print(c, prefix + QLatin1String(" ")); | 187 | print(s, c, prefix + QLatin1String(" ")); |
190 | } | 188 | } |
191 | } | 189 | } |
192 | 190 | ||
193 | static void print(const MessagePart &messagePart, const QByteArray pre = {}) | 191 | static void print(QTextStream &s, const MessagePart &messagePart, const QByteArray pre = {}) |
194 | { | 192 | { |
195 | qWarning() << pre << "#" << messagePart.metaObject()->className() << "isAttachment: " << messagePart.isAttachment(); | 193 | s << pre << "#" << messagePart.metaObject()->className() << "isAttachment: " << messagePart.isAttachment() << "\n"; |
196 | for (const auto &p: messagePart.subParts()) { | 194 | for (const auto &p: messagePart.subParts()) { |
197 | print(*p, pre + " "); | 195 | print(s, *p, pre + " "); |
198 | } | 196 | } |
199 | } | 197 | } |
200 | 198 | ||
201 | void ObjectTreeParser::print() | 199 | QString ObjectTreeParser::structureAsString() const |
202 | { | 200 | { |
201 | QString string; | ||
202 | QTextStream s{&string}; | ||
203 | |||
203 | if (mTopLevelContent) { | 204 | if (mTopLevelContent) { |
204 | ::print(mTopLevelContent); | 205 | ::print(s, mTopLevelContent); |
205 | } | 206 | } |
206 | if (mParsedPart) { | 207 | if (mParsedPart) { |
207 | ::print(*mParsedPart); | 208 | ::print(s, *mParsedPart); |
208 | } | 209 | } |
210 | return string; | ||
211 | } | ||
212 | |||
213 | void ObjectTreeParser::print() | ||
214 | { | ||
215 | qInfo().noquote() << structureAsString(); | ||
209 | } | 216 | } |
210 | 217 | ||
211 | static KMime::Content *find(KMime::Content *node, const std::function<bool(KMime::Content *)> &select) | 218 | static KMime::Content *find(KMime::Content *node, const std::function<bool(KMime::Content *)> &select) |
diff --git a/framework/src/domain/mime/mimetreeparser/objecttreeparser.h b/framework/src/domain/mime/mimetreeparser/objecttreeparser.h index 02f94700..1795c79c 100644 --- a/framework/src/domain/mime/mimetreeparser/objecttreeparser.h +++ b/framework/src/domain/mime/mimetreeparser/objecttreeparser.h | |||
@@ -240,6 +240,7 @@ public: | |||
240 | 240 | ||
241 | virtual ~ObjectTreeParser(); | 241 | virtual ~ObjectTreeParser(); |
242 | 242 | ||
243 | QString structureAsString() const; | ||
243 | void print(); | 244 | void print(); |
244 | 245 | ||
245 | /** | 246 | /** |