summaryrefslogtreecommitdiffstats
path: root/framework
diff options
context:
space:
mode:
Diffstat (limited to 'framework')
-rw-r--r--framework/qml/MailViewer.qml11
-rw-r--r--framework/src/domain/mime/messageparser.cpp8
-rw-r--r--framework/src/domain/mime/messageparser.h3
-rw-r--r--framework/src/domain/mime/mimetreeparser/objecttreeparser.cpp31
-rw-r--r--framework/src/domain/mime/mimetreeparser/objecttreeparser.h1
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
71QString MessageParser::structureAsString() const
72{
73 if (!d->mParser) {
74 return nullptr;
75 }
76 return d->mParser->structureAsString();
77}
78
71QAbstractItemModel *MessageParser::parts() const 79QAbstractItemModel *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
47public: 48public:
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;
57signals: 58signals:
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
62using namespace MimeTreeParser; 60using namespace MimeTreeParser;
63 61
@@ -175,7 +173,7 @@ QString ObjectTreeParser::htmlContent()
175 return content; 173 return content;
176} 174}
177 175
178static void print(KMime::Content *node, const QString prefix = {}) 176static 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
193static void print(const MessagePart &messagePart, const QByteArray pre = {}) 191static 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
201void ObjectTreeParser::print() 199QString 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
213void ObjectTreeParser::print()
214{
215 qInfo().noquote() << structureAsString();
209} 216}
210 217
211static KMime::Content *find(KMime::Content *node, const std::function<bool(KMime::Content *)> &select) 218static 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 /**