[pim/mimetreeparser] /: Fix ODR by instead assigning new namespaces
Claudio Cambra <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit a6ab2e8ac54e288e1ca30fd96965af6efc0553cd by Claudio Cambra.
Committed on 16/08/2026 at 12:53.
Pushed by clau-cambra into branch 'master'.
Fix ODR by instead assigning new namespaces
Avoids test fail
M +1 -0 autotests/core/attachmenttest.cpp
M +5 -4 autotests/core/cryptohelpertest.cpp
M +7 -7 autotests/core/gpgerrortest.cpp
M +125 -125 autotests/core/mimetreeparsertest.cpp
M +1 -1 autotests/core/partmodeltest.cpp
M +0 -2 src/core/CMakeLists.txt
M +10 -10 src/core/attachmentmodel.cpp
M +6 -6 src/core/attachmentmodel.h
M +2 -2 src/core/bodypartformatter.cpp
M +1 -1 src/core/bodypartformatter.h
M +15 -15 src/core/bodypartformatter_impl.cpp
M +1 -1 src/core/bodypartformatterbasefactory.cpp
M +2 -2 src/core/bodypartformatterbasefactory.h
M +1 -1 src/core/bodypartformatterbasefactory_p.h
M +9 -8 src/core/cryptohelper.cpp
M +4 -4 src/core/cryptohelper.h
M +1 -1 src/core/enums.h
M +1 -1 src/core/htmlutils.cpp
M +1 -1 src/core/htmlutils.h
M +3 -3 src/core/messageparser.cpp
M +1 -1 src/core/messageparser.h
M +3 -3 src/core/messagepart.cpp
M +10 -10 src/core/messagepart.h
M +16 -16 src/core/objecttreeparser.cpp
M +2 -2 src/core/objecttreeparser.h
M +1 -1 src/core/partmetadata.h
M +55 -55 src/core/partmodel.cpp
M +8 -8 src/core/partmodel.h
M +1 -1 src/core/urlhandler.h
M +5 -5 src/core/utils.cpp
M +1 -1 src/core/utils.h
M +0 -2 src/widgets/CMakeLists.txt
M +4 -4 src/widgets/messagecontainerwidget.cpp
M +1 -1 src/widgets/messagecontainerwidget_p.h
M +16 -15 src/widgets/messageviewer.cpp
M +7 -3 src/widgets/messageviewer.h
M +1 -0 src/widgets/messageviewerbase_p.cpp
M +1 -1 src/widgets/messageviewerdialog.h
M +1 -1 src/widgets/messageviewerwindow.h
https://invent.kde.org/pim/mimetreeparser/-/commit/a6ab2e8ac54e288e1ca30fd96965af6efc0553cd
diff --git a/autotests/core/attachmenttest.cpp b/autotests/core/attachmenttest.cpp
index 067196e..f2c3114 100644
--- a/autotests/core/attachmenttest.cpp
+++ b/autotests/core/attachmenttest.cpp
@@ -8,6 +8,7 @@
#include <QTest>
using namespace MimeTreeParser;
+using namespace MimeTreeParser::Core;
class AttachmentTest : public QObject
{
diff --git a/autotests/core/cryptohelpertest.cpp b/autotests/core/cryptohelpertest.cpp
index 050ed37..595e1c9 100644
--- a/autotests/core/cryptohelpertest.cpp
+++ b/autotests/core/cryptohelpertest.cpp
@@ -10,6 +10,7 @@
#include <QTest>
using namespace MimeTreeParser;
+using namespace MimeTreeParser::Core;
using namespace Qt::Literals::StringLiterals;
static QByteArray readMailFromFile(const QString &mailFile)
@@ -204,7 +205,7 @@ void CryptoHelperTest::testDecryptInlineMessage()
"asdasd asd asd asdf sadf sdaf sadf \xF6\xE4\xFC\nNot signed.\n"));
}
-static bool hasEncryptedContents(QSharedPointer<MimeTreeParser::MessagePart> part)
+static bool hasEncryptedContents(QSharedPointer<MimeTreeParser::Core::MessagePart> part)
{
const auto subparts = part->subParts();
for (const auto &subpart : subparts) {
@@ -212,7 +213,7 @@ static bool hasEncryptedContents(QSharedPointer<MimeTreeParser::MessagePart> par
return true;
}
}
- return part.dynamicCast<MimeTreeParser::EncryptedMessagePart>().get();
+ return part.dynamicCast<MimeTreeParser::Core::EncryptedMessagePart>().get();
}
void CryptoHelperTest::testSaveDecrypted_data()
@@ -236,7 +237,7 @@ void CryptoHelperTest::testSaveDecrypted()
QFETCH(bool, hasInlinePGPBlocks);
const auto originalMessage = MimeTreeParser::Core::FileOpener::openFile(QLatin1StringView(MAIL_DATA_DIR) + u'/' + mailFile).value(0);
- MimeTreeParser::ObjectTreeParser originalOtp;
+ MimeTreeParser::Core::ObjectTreeParser originalOtp;
originalOtp.parseObjectTree(originalMessage.get());
originalOtp.decryptAndVerify();
const auto originalContents = originalOtp.collectContentParts();
@@ -245,7 +246,7 @@ void CryptoHelperTest::testSaveDecrypted()
MessagePart::Error error = MessagePart::NoError;
const auto decryptedMessage = CryptoUtils::decryptMessage(originalMessage, wasEncrypted, error);
- MimeTreeParser::ObjectTreeParser decryptedOtp;
+ MimeTreeParser::Core::ObjectTreeParser decryptedOtp;
decryptedOtp.parseObjectTree(decryptedMessage.get());
decryptedOtp.decryptAndVerify(); // we still need to verify signatures
QVERIFY(!hasEncryptedContents(decryptedOtp.parsedPart()));
diff --git a/autotests/core/gpgerrortest.cpp b/autotests/core/gpgerrortest.cpp
index 6f932ca..c58f051 100644
--- a/autotests/core/gpgerrortest.cpp
+++ b/autotests/core/gpgerrortest.cpp
@@ -42,7 +42,7 @@ private Q_SLOTS:
{
setEnv("GNUPGHOME", GNUPGHOME);
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile(QStringLiteral("openpgp-inline-charset-encrypted.mbox")));
otp.print();
otp.decryptAndVerify();
@@ -55,7 +55,7 @@ private Q_SLOTS:
QVERIFY(part->text().startsWith(QStringLiteral("asdasd")));
QCOMPARE(part->encryptions().size(), 1);
auto enc = part->encryptions()[0];
- QCOMPARE(enc->error(), MimeTreeParser::MessagePart::NoError);
+ QCOMPARE(enc->error(), MimeTreeParser::Core::MessagePart::NoError);
// QCOMPARE((int) enc->recipients().size(), 2);
}
@@ -75,20 +75,20 @@ private Q_SLOTS:
setEnv("PATH", "/nonexististing");
setGpgMEfname("/nonexisting/gpg", "");
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile(mailFileName));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->encryptions().size(), 1);
QVERIFY(part->text().isEmpty());
auto enc = part->encryptions()[0];
- QCOMPARE(enc->error(), MimeTreeParser::MessagePart::NoKeyError);
+ QCOMPARE(enc->error(), MimeTreeParser::Core::MessagePart::NoKeyError);
}
void testGpgIncorrectGPGHOME_data()
@@ -105,14 +105,14 @@ private Q_SLOTS:
QFETCH(QString, mailFileName);
setEnv("GNUPGHOME", QByteArray(GNUPGHOME) + QByteArray("noexist"));
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile(mailFileName));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->encryptions().size(), 1);
diff --git a/autotests/core/mimetreeparsertest.cpp b/autotests/core/mimetreeparsertest.cpp
index 436d98d..79971e3 100644
--- a/autotests/core/mimetreeparsertest.cpp
+++ b/autotests/core/mimetreeparsertest.cpp
@@ -30,11 +30,11 @@ private Q_SLOTS:
u"If you can see this text it means that your email client couldn't display our newsletter properly.\nPlease visit this link to view the "
u"newsletter "
"on our website: http://www.gog.com/newsletter/"_s;
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("plaintext.mbox"_L1));
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QCOMPARE(part->text(), expectedText);
QCOMPARE(part->charset(), u"utf-8"_s.toLocal8Bit());
@@ -49,7 +49,7 @@ private Q_SLOTS:
void testAlternative()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("alternative.mbox"_L1));
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
@@ -68,12 +68,12 @@ private Q_SLOTS:
void testTextHtml()
{
auto expectedText = u"<html><body><p><span>HTML</span> text</p></body></html>"_s;
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("html.mbox"_L1));
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::HtmlMessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::HtmlMessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->htmlContent(), expectedText);
QCOMPARE(part->charset(), u"windows-1252"_s.toLocal8Bit());
@@ -88,14 +88,14 @@ private Q_SLOTS:
void testSMimeEncrypted()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("smime-encrypted.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->text(), u"The quick brown fox jumped over the lazy dog."_s);
QCOMPARE(part->charset(), u"us-ascii"_s.toLocal8Bit());
@@ -107,47 +107,47 @@ private Q_SLOTS:
void testOpenPGPEncryptedAttachment()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-encrypted-attachment-and-non-encrypted-attachment.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->text(), u"test text"_s);
QCOMPARE(part->charset(), u"us-ascii"_s.toLocal8Bit());
QCOMPARE(part->encryptions().size(), 1);
QCOMPARE(part->signatures().size(), 1);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgFullyEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgFullySigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgFullyEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgFullySigned);
auto contentAttachmentList = otp.collectAttachmentParts();
QCOMPARE(contentAttachmentList.size(), 2);
// QCOMPARE(contentAttachmentList[0]->availableContents(), QList<QByteArray>() << "text/plain");
// QCOMPARE(contentAttachmentList[0]->content().size(), 1);
QCOMPARE(contentAttachmentList[0]->encryptions().size(), 1);
QCOMPARE(contentAttachmentList[0]->signatures().size(), 1);
- QCOMPARE(contentAttachmentList[0]->encryptionState(), MimeTreeParser::KMMsgFullyEncrypted);
- QCOMPARE(contentAttachmentList[0]->signatureState(), MimeTreeParser::KMMsgFullySigned);
+ QCOMPARE(contentAttachmentList[0]->encryptionState(), MimeTreeParser::Core::KMMsgFullyEncrypted);
+ QCOMPARE(contentAttachmentList[0]->signatureState(), MimeTreeParser::Core::KMMsgFullySigned);
// QCOMPARE(contentAttachmentList[1]->availableContents(), QList<QByteArray>() << "image/png");
// QCOMPARE(contentAttachmentList[1]->content().size(), 1);
QCOMPARE(contentAttachmentList[1]->encryptions().size(), 0);
QCOMPARE(contentAttachmentList[1]->signatures().size(), 0);
- QCOMPARE(contentAttachmentList[1]->encryptionState(), MimeTreeParser::KMMsgNotEncrypted);
- QCOMPARE(contentAttachmentList[1]->signatureState(), MimeTreeParser::KMMsgNotSigned);
+ QCOMPARE(contentAttachmentList[1]->encryptionState(), MimeTreeParser::Core::KMMsgNotEncrypted);
+ QCOMPARE(contentAttachmentList[1]->signatureState(), MimeTreeParser::Core::KMMsgNotSigned);
}
void testOpenPGPInline()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-inline-charset-encrypted.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->charset(), u"ISO-8859-15"_s.toLocal8Bit());
QCOMPARE(part->text(), QString::fromUtf8("asdasd asd asd asdf sadf sdaf sadf öäü"));
@@ -159,7 +159,7 @@ private Q_SLOTS:
void testMultipartAlternativeOpenPGPInline()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("multipart-mixed-alternative-inline-pgp.mbox"_L1));
otp.print();
otp.decryptAndVerify();
@@ -168,25 +168,25 @@ private Q_SLOTS:
QCOMPARE(partList.size(), 3);
auto part = partList[0];
QVERIFY(bool(part));
- QCOMPARE(part->parentPart()->encryptionState(), MimeTreeParser::KMMsgNotEncrypted);
+ QCOMPARE(part->parentPart()->encryptionState(), MimeTreeParser::Core::KMMsgNotEncrypted);
QVERIFY(part->text().contains(u"Some text before PGP block"));
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgNotEncrypted);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgNotEncrypted);
QCOMPARE(part->encryptions().size(), 0);
part = partList[1];
QVERIFY(bool(part));
QVERIFY(part->text().contains(u"encrypted message text"));
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgFullyEncrypted);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgFullyEncrypted);
QCOMPARE(part->encryptions().size(), 1);
part = partList[2];
QVERIFY(bool(part));
QVERIFY(part->text().contains(u"Some text after PGP block"));
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgNotEncrypted);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgNotEncrypted);
QCOMPARE(part->encryptions().size(), 0);
}
void testOpenPPGInlineWithNonEncText()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-inline-encrypted+nonenc.mbox"_L1));
otp.print();
otp.decryptAndVerify();
@@ -196,46 +196,46 @@ private Q_SLOTS:
auto part = partList[0];
QVERIFY(bool(part));
QCOMPARE(part->text().trimmed(), u"Not encrypted not signed :("_s);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgNotEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgNotSigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgNotEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgNotSigned);
part = partList[1];
QVERIFY(bool(part));
QCOMPARE(part->text().trimmed(), u"some random text"_s);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgFullyEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgNotSigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgFullyEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgNotSigned);
part = partList[2];
QVERIFY(bool(part));
QCOMPARE(part->text().trimmed(), u"A signed part follows, but this text here is not signed, at all."_s);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgNotEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgNotSigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgNotEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgNotSigned);
part = partList[3];
QVERIFY(bool(part));
QCOMPARE(part->text().trimmed(), u"asdasd asd asd asdf sadf sdaf sadf öäü"_s);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgFullyEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgFullySigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgFullyEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgFullySigned);
part = partList[4];
QVERIFY(bool(part));
QCOMPARE(part->text().trimmed(), u"Not signed."_s);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgNotEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgNotSigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgNotEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgNotSigned);
QCOMPARE(otp.collectAttachmentParts().size(), 0);
}
void testEncryptionBlock()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-encrypted-attachment-and-non-encrypted-attachment.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part1 = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part1 = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part1));
QCOMPARE(part1->encryptions().size(), 1);
// auto enc = contentList[0]->encryptions()[0];
@@ -264,14 +264,14 @@ private Q_SLOTS:
void testSignatureBlock()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-encrypted-attachment-and-non-encrypted-attachment.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
// QCOMPARE(contentList[0]->signatures().size(), 1);
@@ -289,12 +289,12 @@ private Q_SLOTS:
void testRelatedAlternative()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("cid-links.mbox"_L1));
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->encryptions().size(), 0);
QCOMPARE(part->signatures().size(), 0);
@@ -303,12 +303,12 @@ private Q_SLOTS:
void testAttachmentPart()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("attachment.mbox"_L1));
otp.print();
auto partList = otp.collectAttachmentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->mimeType(), "image/jpeg");
QCOMPARE(part->filename(), u"aqnaozisxya.jpeg"_s);
@@ -316,12 +316,12 @@ private Q_SLOTS:
void testAttachment2Part()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("attachment2.mbox"_L1));
otp.print();
auto partList = otp.collectAttachmentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->mimeType(), "image/jpeg");
QCOMPARE(part->filename(), u"aqnaozisxya.jpeg"_s);
@@ -329,7 +329,7 @@ private Q_SLOTS:
void testCidLink()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("cid-links.mbox"_L1));
otp.print();
auto partList = otp.collectContentParts();
@@ -342,7 +342,7 @@ private Q_SLOTS:
void testCidLinkInForwardedInline()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("cid-links-forwarded-inline.mbox"_L1));
otp.print();
auto partList = otp.collectContentParts();
@@ -355,38 +355,38 @@ private Q_SLOTS:
void testOpenPGPInlineError()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("inlinepgpgencrypted-error.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::EncryptedMessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::EncryptedMessagePart>();
QVERIFY(bool(part));
QVERIFY(part->error());
}
void testEncapsulated()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("encapsulated-with-attachment.mbox"_L1));
otp.decryptAndVerify();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 2);
- auto part = partList[1].dynamicCast<MimeTreeParser::EncapsulatedRfc822MessagePart>();
+ auto part = partList[1].dynamicCast<MimeTreeParser::Core::EncapsulatedRfc822MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->from(), "Thomas McGuire <[email protected]>"_L1);
QCOMPARE(part->date().toString(), "Wed Aug 5 10:57:58 2009 GMT+0200"_L1);
auto subPartList = otp.collectContentParts(part);
QCOMPARE(subPartList.size(), 1);
- auto textPart = qobject_cast<MimeTreeParser::TextMessagePart *>(subPartList[0]->parentPart());
+ auto textPart = qobject_cast<MimeTreeParser::Core::TextMessagePart *>(subPartList[0]->parentPart());
QVERIFY(bool(textPart));
}
void testGpgOLencapsulatedMime()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("internal-pgpencrypted-mime.mbox"_L1));
otp.decryptAndVerify();
@@ -395,7 +395,7 @@ private Q_SLOTS:
auto partList = otp.collectContentParts();
// NOTE: The test message contains an initial empty text/plain part. In this test
// we don't want to assume whether or not that gets stripped.
- auto part = partList.last().dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList.last().dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->encryptions().size(), 1);
QCOMPARE(part->signatures().size(), 1);
@@ -407,7 +407,7 @@ private Q_SLOTS:
void test8bitEncodedInPlaintext()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("8bitencoded.mbox"_L1));
QVERIFY(otp.plainTextContent().contains(QString::fromUtf8("Why Pisa’s Tower")));
QVERIFY(otp.htmlContent().contains(QString::fromUtf8("Why Pisa’s Tower"_L1)));
@@ -415,7 +415,7 @@ private Q_SLOTS:
void testInlineSigned()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-inline-signed.mbox"_L1));
otp.decryptAndVerify();
otp.print();
@@ -424,14 +424,14 @@ private Q_SLOTS:
QCOMPARE(partList.size(), 2);
auto part = partList[0];
QCOMPARE(part->signatures().size(), 0);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgNotEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgNotSigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgNotEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgNotSigned);
QCOMPARE(part->text().trimmed(), u"Unsigned part"_s);
part = partList[1];
QCOMPARE(part->signatures().size(), 1);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgNotEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgFullySigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgNotEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgFullySigned);
QCOMPARE(part->text().trimmed(), u"ohno öäü"_s);
const auto details = PartModel::signatureDetails(part.get());
const QString detailsWithoutTimestamp = QString{details}.replace(QRegularExpression{u"on .* with"_s}, u"on TIMESTAMP with"_s);
@@ -444,7 +444,7 @@ private Q_SLOTS:
void testInlineSignedBroken()
{
// cryptographically bad signature in wellformed inline PGP block
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-inline-signed-broken.mbox"_L1));
otp.decryptAndVerify();
otp.print();
@@ -452,8 +452,8 @@ private Q_SLOTS:
QCOMPARE(partList.size(), 1);
auto part = partList[0];
QCOMPARE(part->signatures().size(), 1);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgNotEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgFullySigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgNotEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgFullySigned);
QCOMPARE(part->text().trimmed(), u"ohno break it öäü"_s);
const auto details = PartModel::signatureDetails(part.get());
QVERIFY(details.contains(u"Bad signature"_s));
@@ -463,7 +463,7 @@ private Q_SLOTS:
void testInlineSignedBroken2()
{
// cryptographically "valid" signature, in a non-parsable inline PGP block
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-inline-signed-broken2.mbox"_L1));
otp.decryptAndVerify();
otp.print();
@@ -471,14 +471,14 @@ private Q_SLOTS:
QCOMPARE(partList.size(), 1);
auto part = partList[0];
QCOMPARE(part->signatures().size(), 1);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgNotEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgFullySigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgNotEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgFullySigned);
QCOMPARE(PartModel::signatureSecurityLevel(part.get()), PartModel::SecurityLevel::Bad);
}
void testSignedSenderMismatch()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-signed-sender-mismatch.mbox"_L1));
otp.print();
otp.decryptAndVerify();
@@ -486,20 +486,20 @@ private Q_SLOTS:
QVERIFY(otp.hasSignedParts());
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QCOMPARE(PartModel::signatureSecurityLevel(part.get()), PartModel::NotSoGood);
}
void testEncapsulatedMessageWithoutFrom()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("forward-openpgp-signed-encrypted-no-from.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 2);
- auto part = partList[1].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[1].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
auto encapsulated = part->subParts().at(0)->subParts().at(0);
@@ -510,16 +510,16 @@ private Q_SLOTS:
void testEncryptedAndSigned()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-encrypted+signed.mbox"_L1));
otp.decryptAndVerify();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QCOMPARE(part->signatures().size(), 1);
QCOMPARE(part->encryptions().size(), 1);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgFullyEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgFullySigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgFullyEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgFullySigned);
QVERIFY(otp.plainTextContent().contains("encrypted message text"_L1));
const auto details = PartModel::signatureDetails(part.get());
@@ -532,31 +532,31 @@ private Q_SLOTS:
void testOpenpgpMultipartEmbedded()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-multipart-embedded.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QCOMPARE(part->encryptions().size(), 1);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgFullyEncrypted);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgFullyEncrypted);
QCOMPARE(otp.plainTextContent(), "sdflskjsdf\n\n-- \nThis is a HTML signature.\n"_L1);
}
void testOpenpgpMultipartEmbeddedSigned()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-multipart-embedded-signed.mbox"_L1));
otp.decryptAndVerify();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QCOMPARE(part->encryptions().size(), 1);
QCOMPARE(part->signatures().size(), 1);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgFullyEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgFullySigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgFullyEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgFullySigned);
QCOMPARE(otp.plainTextContent(), "test\n\n-- \nThis is a HTML signature.\n"_L1);
const auto details = PartModel::signatureDetails(part.get());
@@ -570,14 +570,14 @@ private Q_SLOTS:
void testOpenpgpMaybeMangled()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-encrypted-ambiguous-mime.mbox"_L1));
otp.decryptAndVerify();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 2); // initial text/plain, followed by encrypted message parrt
- auto part = partList[1].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[1].dynamicCast<MimeTreeParser::Core::MessagePart>();
QCOMPARE(part->encryptions().size(), 1);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgFullyEncrypted);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgFullyEncrypted);
QVERIFY(otp.plainTextContent().contains(u"First message part"_s));
QVERIFY(otp.plainTextContent().contains(u"this is the main body part"_s));
@@ -588,7 +588,7 @@ private Q_SLOTS:
void testAppleHtmlWithAttachments()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("applehtmlwithattachments.mbox"_L1));
otp.decryptAndVerify();
auto partList = otp.collectContentParts();
@@ -615,7 +615,7 @@ private Q_SLOTS:
void testAppleHtmlWithAttachmentsMixed()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("applehtmlwithattachmentsmixed.mbox"_L1));
otp.decryptAndVerify();
otp.print();
@@ -641,7 +641,7 @@ private Q_SLOTS:
void testInvitation()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("invitation.mbox"_L1));
otp.decryptAndVerify();
otp.print();
@@ -652,7 +652,7 @@ private Q_SLOTS:
QCOMPARE(part->encryptions().size(), 0);
QCOMPARE(part->signatures().size(), 0);
QVERIFY(!part->isHtml());
- QVERIFY(part->availableModes().contains(MimeTreeParser::AlternativeMessagePart::MultipartIcal));
+ QVERIFY(part->availableModes().contains(MimeTreeParser::Core::AlternativeMessagePart::MultipartIcal));
auto attachments = otp.collectAttachmentParts();
QCOMPARE(attachments.size(), 0);
@@ -660,7 +660,7 @@ private Q_SLOTS:
void testGmailInvitation()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("gmail-invitation.mbox"_L1));
otp.decryptAndVerify();
otp.print();
@@ -672,7 +672,7 @@ private Q_SLOTS:
qWarning() << part;
QCOMPARE(part->signatures().size(), 0);
QVERIFY(part->isHtml());
- QVERIFY(part->availableModes().contains(MimeTreeParser::AlternativeMessagePart::MultipartIcal));
+ QVERIFY(part->availableModes().contains(MimeTreeParser::Core::AlternativeMessagePart::MultipartIcal));
auto attachments = otp.collectAttachmentParts();
QCOMPARE(attachments.size(), 1);
@@ -680,14 +680,14 @@ private Q_SLOTS:
void testMemoryHole()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-encrypted-memoryhole.mbox"_L1));
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->text(), u"very secret mesage\n"_s);
@@ -707,7 +707,7 @@ private Q_SLOTS:
*/
void testMemoryHoleWithList()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("cid-links-forwarded-inline.mbox"_L1));
const auto parts = otp.collectContentParts();
auto part = parts[0];
@@ -717,14 +717,14 @@ private Q_SLOTS:
void testMemoryHoleMultipartMixed()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-encrypted-memoryhole2.mbox"_L1));
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->text(), "\n\n Fsdflkjdslfj\n\n\nHappy Monday!\n\nBelow you will find a quick overview of the current on-goings. Remember\n"_L1);
@@ -734,7 +734,7 @@ private Q_SLOTS:
void testMIMESignature()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("text+html-maillinglist.mbox"_L1));
otp.decryptAndVerify();
otp.print();
@@ -760,7 +760,7 @@ private Q_SLOTS:
void testCRLFEncryptedWithSignature()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("crlf-encrypted-with-signature.mbox"_L1));
otp.decryptAndVerify();
otp.print();
@@ -770,7 +770,7 @@ private Q_SLOTS:
void testCRLFEncryptedWithSignatureMultipart()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("crlf-encrypted-with-signature-multipart.mbox"_L1));
otp.decryptAndVerify();
otp.print();
@@ -782,7 +782,7 @@ private Q_SLOTS:
void testCRLFOutlook()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("outlook.mbox"_L1));
otp.decryptAndVerify();
otp.print();
@@ -794,45 +794,45 @@ private Q_SLOTS:
void testOpenPGPEncryptedSignedThunderbird()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("openpgp-encrypted-signed-thunderbird.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->text(), "sdfsdf\n"_L1);
QCOMPARE(part->charset(), u"utf-8"_s.toLocal8Bit());
QCOMPARE(part->encryptions().size(), 1);
QCOMPARE(part->signatures().size(), 1);
QCOMPARE(PartModel::signatureSecurityLevel(part.get()), PartModel::Good);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgFullyEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgFullySigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgFullyEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgFullySigned);
auto contentAttachmentList = otp.collectAttachmentParts();
QCOMPARE(contentAttachmentList.size(), 1);
// QCOMPARE(contentAttachmentList[0]->content().size(), 1);
QCOMPARE(contentAttachmentList[0]->encryptions().size(), 1);
QCOMPARE(contentAttachmentList[0]->signatures().size(), 1);
- QCOMPARE(contentAttachmentList[0]->encryptionState(), MimeTreeParser::KMMsgFullyEncrypted);
- QCOMPARE(contentAttachmentList[0]->signatureState(), MimeTreeParser::KMMsgFullySigned);
+ QCOMPARE(contentAttachmentList[0]->encryptionState(), MimeTreeParser::Core::KMMsgFullyEncrypted);
+ QCOMPARE(contentAttachmentList[0]->signatureState(), MimeTreeParser::Core::KMMsgFullySigned);
}
void testSignedForwardOpenpgpSignedEncrypted()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("signed-forward-openpgp-signed-encrypted.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 2);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->text(), "bla bla bla"_L1);
- part = partList[1].dynamicCast<MimeTreeParser::MessagePart>();
+ part = partList[1].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->text(), QString());
QCOMPARE(part->charset(), u"UTF-8"_s.toLocal8Bit());
@@ -844,77 +844,77 @@ private Q_SLOTS:
void testSmimeOpaqueSign()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("smime-opaque-sign.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->text(), "A simple signed only test."_L1);
}
void testSmimeEncrypted()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("smime-encrypted.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->text(), "The quick brown fox jumped over the lazy dog."_L1);
}
void testSmimeSignedApple()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("smime-signed-apple.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
// QCOMPARE(part->text(), u"A simple signed only test."_s);
}
void testSmimeSignedCharset()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("smime-signed-charset.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->charset().toLower(), u"iso-8859-1"_s.toLocal8Bit());
}
void testSmimeEncryptedOctetStream()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("smime-encrypted-octet-stream.mbox"_L1));
otp.print();
otp.decryptAndVerify();
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->text(), "The quick brown fox jumped over the lazy dog."_L1);
}
void testSmimeOpaqueSignedEncryptedAttachment()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("smime-opaque-signed-encrypted-attachment.mbox"_L1));
otp.print();
QVERIFY(otp.hasEncryptedParts());
@@ -922,14 +922,14 @@ private Q_SLOTS:
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->text(), "This is an Opaque S/MIME encrypted and signed message with attachment"_L1);
}
void testSmimeOpaqueEncSign()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("smime-opaque-enc+sign.mbox"_L1));
otp.print();
QVERIFY(otp.hasEncryptedParts());
@@ -939,30 +939,30 @@ private Q_SLOTS:
otp.print();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 1);
- auto part = partList[0].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[0].dynamicCast<MimeTreeParser::Core::MessagePart>();
QVERIFY(bool(part));
QCOMPARE(part->text(), "Encrypted and signed mail."_L1);
}
void testSmimeMaybeMangled()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("smime-encrypted-ambiguous-mime.mbox"_L1));
otp.decryptAndVerify();
auto partList = otp.collectContentParts();
QCOMPARE(partList.size(), 2); // initial text/plain, followed by encrypted message part
- auto part = partList[1].dynamicCast<MimeTreeParser::MessagePart>();
+ auto part = partList[1].dynamicCast<MimeTreeParser::Core::MessagePart>();
QCOMPARE(part->encryptions().size(), 1);
QCOMPARE(part->signatures().size(), 1);
- QCOMPARE(part->encryptionState(), MimeTreeParser::KMMsgFullyEncrypted);
- QCOMPARE(part->signatureState(), MimeTreeParser::KMMsgFullySigned);
+ QCOMPARE(part->encryptionState(), MimeTreeParser::Core::KMMsgFullyEncrypted);
+ QCOMPARE(part->signatureState(), MimeTreeParser::Core::KMMsgFullySigned);
QVERIFY(otp.plainTextContent().contains(u"First message part"_s));
QVERIFY(otp.plainTextContent().contains(u"Encrypted and signed mail."_s));
}
void testSmimeMaybeMangled2()
{
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(readMailFromFile("smime-encrypted-not-so-ambiguous-mime.mbox"_L1));
otp.decryptAndVerify();
auto partList = otp.collectContentParts();
diff --git a/autotests/core/partmodeltest.cpp b/autotests/core/partmodeltest.cpp
index f8ef465..be5ada8 100644
--- a/autotests/core/partmodeltest.cpp
+++ b/autotests/core/partmodeltest.cpp
@@ -94,7 +94,7 @@ private Q_SLOTS:
}
auto encapsulatedIndex = partModel->index(1, 0);
- auto encapsulatedPart = partModel->part<MimeTreeParser::EncapsulatedRfc822MessagePart>(encapsulatedIndex);
+ auto encapsulatedPart = partModel->part<MimeTreeParser::Core::EncapsulatedRfc822MessagePart>(encapsulatedIndex);
QVERIFY(encapsulatedPart);
QCOMPARE(encapsulatedPart->subject(), QStringLiteral("OpenPGP signed and encrypted"));
}
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 84b5534..9681650 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -94,8 +94,6 @@ set_target_properties(
MimeTreeParserCore
)
-target_link_options(KPim6MimeTreeParserCore PRIVATE "LINKER:-Bsymbolic")
-
ecm_generate_pri_file(BASE_NAME MimeTreeParserCore
LIB_NAME KPim6MimeTreeParserCore
DEPS "MimeTreeParserCore"
diff --git a/src/core/attachmentmodel.cpp b/src/core/attachmentmodel.cpp
index d2c7844..1961e91 100644
--- a/src/core/attachmentmodel.cpp
+++ b/src/core/attachmentmodel.cpp
@@ -131,26 +131,26 @@ struct WindowFile {
class AttachmentModelPrivate
{
public:
- AttachmentModelPrivate(AttachmentModel *q_ptr, const std::shared_ptr<MimeTreeParser::ObjectTreeParser> &parser);
+ AttachmentModelPrivate(AttachmentModel *q_ptr, const std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> &parser);
AttachmentModel *const q;
QMimeDatabase mimeDb;
- std::shared_ptr<MimeTreeParser::ObjectTreeParser> mParser;
- QList<QSharedPointer<MimeTreeParser::MessagePart>> mAttachments;
+ std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> mParser;
+ QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> mAttachments;
#ifdef Q_OS_WIN
std::vector<WindowFile> mOpenFiles;
#endif
};
-AttachmentModelPrivate::AttachmentModelPrivate(AttachmentModel *q_ptr, const std::shared_ptr<MimeTreeParser::ObjectTreeParser> &parser)
+AttachmentModelPrivate::AttachmentModelPrivate(AttachmentModel *q_ptr, const std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> &parser)
: q(q_ptr)
, mParser(parser)
{
mAttachments = mParser->collectAttachmentParts();
}
-AttachmentModel::AttachmentModel(std::shared_ptr<MimeTreeParser::ObjectTreeParser> parser)
+AttachmentModel::AttachmentModel(std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> parser)
: QAbstractTableModel()
, d(std::unique_ptr<AttachmentModelPrivate>(new AttachmentModelPrivate(this, parser)))
{
@@ -234,7 +234,7 @@ QVariant AttachmentModel::data(const QModelIndex &index, int role) const
return mimetype.name();
case Qt::DisplayRole:
case NameRole:
- return part->filename(MimeTreeParser::MessagePart::FallbackToNameOrPlaceholder);
+ return part->filename(MimeTreeParser::Core::MessagePart::FallbackToNameOrPlaceholder);
case IconRole:
return mimetype.iconName();
case Qt::DecorationRole:
@@ -282,7 +282,7 @@ QString AttachmentModel::saveAttachmentToPath(const int row, const QString &path
return saveAttachmentToPath(part, path);
}
-QString AttachmentModel::saveAttachmentToPath(const QSharedPointer<MimeTreeParser::MessagePart> &part, const QString &path)
+QString AttachmentModel::saveAttachmentToPath(const QSharedPointer<MimeTreeParser::Core::MessagePart> &part, const QString &path)
{
Q_ASSERT(part);
auto node = part->node();
@@ -317,9 +317,9 @@ bool AttachmentModel::openAttachment(const int row)
return openAttachment(part);
}
-bool AttachmentModel::openAttachment(const QSharedPointer<MimeTreeParser::MessagePart> &message)
+bool AttachmentModel::openAttachment(const QSharedPointer<MimeTreeParser::Core::MessagePart> &message)
{
- QString fileName = message->filename(MimeTreeParser::MessagePart::FallbackToNameOrPlaceholder);
+ QString fileName = message->filename(MimeTreeParser::Core::MessagePart::FallbackToNameOrPlaceholder);
QTemporaryDir tempDir(QDir::tempPath() + QLatin1Char('/') + qGuiApp->applicationName() + u".XXXXXX"_s);
// TODO: We need some cleanup here. Otherwise the files will stay forever on Windows.
tempDir.setAutoRemove(false);
@@ -374,7 +374,7 @@ bool AttachmentModel::importPublicKey(const int row)
return importPublicKey(part);
}
-bool AttachmentModel::importPublicKey(const QSharedPointer<MimeTreeParser::MessagePart> &part)
+bool AttachmentModel::importPublicKey(const QSharedPointer<MimeTreeParser::Core::MessagePart> &part)
{
Q_ASSERT(part);
const QByteArray certData = part->node()->decodedBody();
diff --git a/src/core/attachmentmodel.h b/src/core/attachmentmodel.h
index 1b69362..53a5d77 100644
--- a/src/core/attachmentmodel.h
+++ b/src/core/attachmentmodel.h
@@ -11,13 +11,13 @@
#include <memory>
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
class ObjectTreeParser;
}
class AttachmentModelPrivate;
/*!
- * \class MimeTreeParser::AttachmentModel
+ * \class AttachmentModel
* \inmodule MimeTreeParserCore
* \inheaderfile MimeTreeParserCore/AttachmentModel
*/
@@ -29,7 +29,7 @@ public:
* \brief AttachmentModel
* \param parser
*/
- explicit AttachmentModel(std::shared_ptr<MimeTreeParser::ObjectTreeParser> parser);
+ explicit AttachmentModel(std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> parser);
/*!
*/
~AttachmentModel() override;
@@ -96,12 +96,12 @@ public:
* \brief Opens the attachment from the message part
* \param message The message part containing the attachment
*/
- bool openAttachment(const QSharedPointer<MimeTreeParser::MessagePart> &message);
+ bool openAttachment(const QSharedPointer<MimeTreeParser::Core::MessagePart> &message);
/*!
* \brief Imports the public key from the message part
* \param message The message part containing the public key
*/
- bool importPublicKey(const QSharedPointer<MimeTreeParser::MessagePart> &message);
+ bool importPublicKey(const QSharedPointer<MimeTreeParser::Core::MessagePart> &message);
/*!
* \brief Saves the attachment at the given row to the specified path
@@ -114,7 +114,7 @@ public:
* \param part The message part containing the attachment
* \param path The destination path
*/
- QString saveAttachmentToPath(const QSharedPointer<MimeTreeParser::MessagePart> &part, const QString &path);
+ QString saveAttachmentToPath(const QSharedPointer<MimeTreeParser::Core::MessagePart> &part, const QString &path);
Q_SIGNALS:
/*!
diff --git a/src/core/bodypartformatter.cpp b/src/core/bodypartformatter.cpp
index e128383..becdae2 100644
--- a/src/core/bodypartformatter.cpp
+++ b/src/core/bodypartformatter.cpp
@@ -3,9 +3,9 @@
#include "bodypartformatter.h"
-using namespace MimeTreeParser::Interface;
+using namespace MimeTreeParser::Core::Interface;
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
namespace Interface
{
diff --git a/src/core/bodypartformatter.h b/src/core/bodypartformatter.h
index e33a4c3..2ed3858 100644
--- a/src/core/bodypartformatter.h
+++ b/src/core/bodypartformatter.h
@@ -11,7 +11,7 @@ namespace KMime
class Content;
}
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
class ObjectTreeParser;
diff --git a/src/core/bodypartformatter_impl.cpp b/src/core/bodypartformatter_impl.cpp
index f0810bc..2ce8fca 100644
--- a/src/core/bodypartformatter_impl.cpp
+++ b/src/core/bodypartformatter_impl.cpp
@@ -15,12 +15,12 @@
#include <KMime/Content>
#include <QGpgME/Protocol>
-using namespace MimeTreeParser;
-using namespace MimeTreeParser::Interface;
+using namespace MimeTreeParser::Core;
+using namespace MimeTreeParser::Core::Interface;
using namespace Qt::Literals::StringLiterals;
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
-class AnyTypeBodyPartFormatter : public MimeTreeParser::Interface::BodyPartFormatter
+class AnyTypeBodyPartFormatter : public MimeTreeParser::Core::Interface::BodyPartFormatter
{
QSharedPointer<MessagePart> process(ObjectTreeParser *objectTreeParser, KMime::Content *node) const override
{
@@ -39,7 +39,7 @@ class AnyTypeBodyPartFormatter : public MimeTreeParser::Interface::BodyPartForma
}
};
-class MessageRfc822BodyPartFormatter : public MimeTreeParser::Interface::BodyPartFormatter
+class MessageRfc822BodyPartFormatter : public MimeTreeParser::Core::Interface::BodyPartFormatter
{
public:
QSharedPointer<MessagePart> process(ObjectTreeParser *objectTreeParser, KMime::Content *node) const override
@@ -48,7 +48,7 @@ public:
}
};
-class HeadersBodyPartFormatter : public MimeTreeParser::Interface::BodyPartFormatter
+class HeadersBodyPartFormatter : public MimeTreeParser::Core::Interface::BodyPartFormatter
{
public:
QSharedPointer<MessagePart> process(ObjectTreeParser *objectTreeParser, KMime::Content *node) const override
@@ -57,7 +57,7 @@ public:
}
};
-class MultiPartRelatedBodyPartFormatter : public MimeTreeParser::Interface::BodyPartFormatter
+class MultiPartRelatedBodyPartFormatter : public MimeTreeParser::Core::Interface::BodyPartFormatter
{
public:
QList<QSharedPointer<MessagePart>> processList(ObjectTreeParser *objectTreeParser, KMime::Content *node) const override
@@ -103,7 +103,7 @@ contentsAsEncryptedMessagePart(ObjectTreeParser *objectTreeParser, KMime::Conten
return {};
}
-class MultiPartMixedBodyPartFormatter : public MimeTreeParser::Interface::BodyPartFormatter
+class MultiPartMixedBodyPartFormatter : public MimeTreeParser::Core::Interface::BodyPartFormatter
{
public:
QSharedPointer<MessagePart> process(ObjectTreeParser *objectTreeParser, KMime::Content *node) const override
@@ -153,7 +153,7 @@ public:
}
};
-class ApplicationPGPEncryptedBodyPartFormatter : public MimeTreeParser::Interface::BodyPartFormatter
+class ApplicationPGPEncryptedBodyPartFormatter : public MimeTreeParser::Core::Interface::BodyPartFormatter
{
public:
QSharedPointer<MessagePart> process(ObjectTreeParser *objectTreeParser, KMime::Content *node) const override
@@ -178,7 +178,7 @@ public:
}
};
-class ApplicationPkcs7MimeBodyPartFormatter : public MimeTreeParser::Interface::BodyPartFormatter
+class ApplicationPkcs7MimeBodyPartFormatter : public MimeTreeParser::Core::Interface::BodyPartFormatter
{
public:
QSharedPointer<MessagePart> process(ObjectTreeParser *objectTreeParser, KMime::Content *node) const override
@@ -265,7 +265,7 @@ public:
}
};
-class MultiPartAlternativeBodyPartFormatter : public MimeTreeParser::Interface::BodyPartFormatter
+class MultiPartAlternativeBodyPartFormatter : public MimeTreeParser::Core::Interface::BodyPartFormatter
{
public:
QSharedPointer<MessagePart> process(ObjectTreeParser *objectTreeParser, KMime::Content *node) const override
@@ -282,7 +282,7 @@ public:
}
};
-class MultiPartEncryptedBodyPartFormatter : public MimeTreeParser::Interface::BodyPartFormatter
+class MultiPartEncryptedBodyPartFormatter : public MimeTreeParser::Core::Interface::BodyPartFormatter
{
public:
QSharedPointer<MessagePart> process(ObjectTreeParser *objectTreeParser, KMime::Content *node) const override
@@ -320,7 +320,7 @@ public:
}
};
-class MultiPartSignedBodyPartFormatter : public MimeTreeParser::Interface::BodyPartFormatter
+class MultiPartSignedBodyPartFormatter : public MimeTreeParser::Core::Interface::BodyPartFormatter
{
public:
static const QGpgME::Protocol *detectProtocol(const QString &protocolContentType_, const QString &signatureContentType)
@@ -370,7 +370,7 @@ public:
}
};
-class TextHtmlBodyPartFormatter : public MimeTreeParser::Interface::BodyPartFormatter
+class TextHtmlBodyPartFormatter : public MimeTreeParser::Core::Interface::BodyPartFormatter
{
public:
QSharedPointer<MessagePart> process(ObjectTreeParser *objectTreeParser, KMime::Content *node) const override
@@ -379,7 +379,7 @@ public:
}
};
-class TextPlainBodyPartFormatter : public MimeTreeParser::Interface::BodyPartFormatter
+class TextPlainBodyPartFormatter : public MimeTreeParser::Core::Interface::BodyPartFormatter
{
public:
QSharedPointer<MessagePart> process(ObjectTreeParser *objectTreeParser, KMime::Content *node) const override
diff --git a/src/core/bodypartformatterbasefactory.cpp b/src/core/bodypartformatterbasefactory.cpp
index 2fcff52..1ab4c78 100644
--- a/src/core/bodypartformatterbasefactory.cpp
+++ b/src/core/bodypartformatterbasefactory.cpp
@@ -8,7 +8,7 @@
#include <assert.h>
-using namespace MimeTreeParser;
+using namespace MimeTreeParser::Core;
BodyPartFormatterBaseFactoryPrivate::BodyPartFormatterBaseFactoryPrivate(BodyPartFormatterBaseFactory *factory)
: q(factory)
diff --git a/src/core/bodypartformatterbasefactory.h b/src/core/bodypartformatterbasefactory.h
index 830b202..09f160e 100644
--- a/src/core/bodypartformatterbasefactory.h
+++ b/src/core/bodypartformatterbasefactory.h
@@ -8,7 +8,7 @@
#include <map>
#include <memory>
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
namespace Interface
@@ -24,7 +24,7 @@ struct ltstr {
};
typedef std::multimap<const char *, std::shared_ptr<Interface::BodyPartFormatter>, ltstr> SubtypeRegistry;
-typedef std::map<const char *, MimeTreeParser::SubtypeRegistry, MimeTreeParser::ltstr> TypeRegistry;
+typedef std::map<const char *, MimeTreeParser::Core::SubtypeRegistry, MimeTreeParser::Core::ltstr> TypeRegistry;
class BodyPartFormatterBaseFactoryPrivate;
diff --git a/src/core/bodypartformatterbasefactory_p.h b/src/core/bodypartformatterbasefactory_p.h
index ffd0329..d89a309 100644
--- a/src/core/bodypartformatterbasefactory_p.h
+++ b/src/core/bodypartformatterbasefactory_p.h
@@ -8,7 +8,7 @@
#include <memory>
#include <optional>
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
class BodyPartFormatterBaseFactory;
diff --git a/src/core/cryptohelper.cpp b/src/core/cryptohelper.cpp
index 1ef1120..d4a58ea 100644
--- a/src/core/cryptohelper.cpp
+++ b/src/core/cryptohelper.cpp
@@ -18,7 +18,7 @@
#include <gpgme++/decryptionresult.h>
#include <gpgme++/verificationresult.h>
-using namespace MimeTreeParser;
+using namespace MimeTreeParser::Core;
PGPBlockType Block::determineType() const
{
@@ -48,7 +48,7 @@ PGPBlockType Block::determineType() const
}
}
-QList<Block> MimeTreeParser::prepareMessageForDecryption(const QByteArray &msg)
+QList<Block> MimeTreeParser::Core::prepareMessageForDecryption(const QByteArray &msg)
{
PGPBlockType pgpBlock = NoPgpBlock;
QList<Block> blocks;
@@ -148,7 +148,7 @@ Block::Block(const QByteArray &m, PGPBlockType t)
{
}
-QByteArray MimeTreeParser::Block::text() const
+QByteArray MimeTreeParser::Core::Block::text() const
{
return msg;
}
@@ -184,7 +184,7 @@ void copyHeader(const KMime::Headers::Base *header, KMime::Content *msg)
// representation. Those, we want to keep, the others we can strip.
/////////////////////////////////////////////////////////////////////
-static QSet<KMime::Content *> representedNodes(MimeTreeParser::MessagePart *part)
+static QSet<KMime::Content *> representedNodes(MimeTreeParser::Core::MessagePart *part)
{
QSet<KMime::Content *> ret;
ret.insert(part->node());
@@ -216,9 +216,10 @@ static void copyMissingHeaders(const KMime::Content *from, KMime::Content *to)
}
}
-static void decryptNodes(MimeTreeParser::MessagePart *part, const QSet<KMime::Content *> &nonRemovableNodes, bool &wasEncrypted, MessagePart::Error &error)
+static void
+decryptNodes(MimeTreeParser::Core::MessagePart *part, const QSet<KMime::Content *> &nonRemovableNodes, bool &wasEncrypted, MessagePart::Error &error)
{
- if (auto enc = qobject_cast<MimeTreeParser::EncryptedMessagePart *>(part)) {
+ if (auto enc = qobject_cast<MimeTreeParser::Core::EncryptedMessagePart *>(part)) {
wasEncrypted = true;
if (enc->error()) {
error = enc->error();
@@ -255,7 +256,7 @@ static void decryptNodes(MimeTreeParser::MessagePart *part, const QSet<KMime::Co
decryptedNode->parse(); // Do this _after_ the node has a parent, and thereby depth()
}
}
- } else if (auto text = qobject_cast<MimeTreeParser::TextMessagePart *>(part)) {
+ } else if (auto text = qobject_cast<MimeTreeParser::Core::TextMessagePart *>(part)) {
if (text->encryptionState()) {
wasEncrypted = true;
}
@@ -284,7 +285,7 @@ std::shared_ptr<KMime::Message> CryptoUtils::decryptMessage(const std::shared_pt
{
auto decryptedCopy = std::shared_ptr<KMime::Message>(static_cast<KMime::Message *>(message->clone().release()));
- MimeTreeParser::ObjectTreeParser otp;
+ MimeTreeParser::Core::ObjectTreeParser otp;
otp.parseObjectTree(decryptedCopy.get());
otp.decryptAndVerify();
diff --git a/src/core/cryptohelper.h b/src/core/cryptohelper.h
index 1c0ee94..26b43d3 100644
--- a/src/core/cryptohelper.h
+++ b/src/core/cryptohelper.h
@@ -14,7 +14,7 @@
#include <QList>
#include <gpgme++/global.h>
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
enum PGPBlockType {
UnknownBlock = -1, // BEGIN PGP ???
@@ -27,7 +27,7 @@ enum PGPBlockType {
PrivateKeyBlock = 6, // BEGIN PGP PRIVATE KEY BLOCK (PGP 2.x: ...SECRET...)
};
/*!
- * \class MimeTreeParser::Block
+ * \class MimeTreeParser::Core::Block
* \inmodule MimeTreeParserCore
* \inheaderfile MimeTreeParserCore/CryptoHelper
*/
@@ -82,6 +82,6 @@ namespace CryptoUtils
decryptMessage(const std::shared_ptr<KMime::Message> &decrypt, bool &wasEncrypted, MessagePart::Error &error);
}
-} // namespace MimeTreeParser
+} // namespace MimeTreeParser::Core
-Q_DECLARE_TYPEINFO(MimeTreeParser::Block, Q_RELOCATABLE_TYPE);
+Q_DECLARE_TYPEINFO(MimeTreeParser::Core::Block, Q_RELOCATABLE_TYPE);
diff --git a/src/core/enums.h b/src/core/enums.h
index c118ab3..d159de1 100644
--- a/src/core/enums.h
+++ b/src/core/enums.h
@@ -3,7 +3,7 @@
#pragma once
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
/**
diff --git a/src/core/htmlutils.cpp b/src/core/htmlutils.cpp
index 3be888b..4f4a772 100644
--- a/src/core/htmlutils.cpp
+++ b/src/core/htmlutils.cpp
@@ -112,7 +112,7 @@ static bool linkify_okEmail(const QString &addy)
* takes a richtext string and heuristically adds links for uris of common protocols
* @return a richtext string with link markup added
*/
-QString MimeTreeParser::linkify(const QString &in)
+QString MimeTreeParser::Core::linkify(const QString &in)
{
QString out = in;
int x1, x2;
diff --git a/src/core/htmlutils.h b/src/core/htmlutils.h
index 81bdba3..18d78d3 100644
--- a/src/core/htmlutils.h
+++ b/src/core/htmlutils.h
@@ -5,7 +5,7 @@
#include <QString>
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
[[nodiscard]] QString linkify(const QString &in);
}
diff --git a/src/core/messageparser.cpp b/src/core/messageparser.cpp
index fec6036..40d556d 100644
--- a/src/core/messageparser.cpp
+++ b/src/core/messageparser.cpp
@@ -57,7 +57,7 @@ QString mailboxesToHtml(const QList<KMime::Types::Mailbox> &mailboxes)
class MessagePartPrivate
{
public:
- std::shared_ptr<MimeTreeParser::ObjectTreeParser> mParser;
+ std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> mParser;
std::shared_ptr<KMime::Message> mMessage;
KMime::Content *protectedHeaderNode = nullptr;
std::unique_ptr<KMime::Content> ownedContent;
@@ -91,7 +91,7 @@ void MessageParser::setMessage(const std::shared_ptr<KMime::Message> message)
QElapsedTimer time;
time.start();
- auto parser = std::make_shared<MimeTreeParser::ObjectTreeParser>();
+ auto parser = std::make_shared<MimeTreeParser::Core::ObjectTreeParser>();
parser->parseObjectTree(message.get());
qCDebug(MIMETREEPARSER_CORE_LOG) << "Message parsing took: " << time.elapsed();
parser->decryptAndVerify();
@@ -124,7 +124,7 @@ void MessageParser::setMessage(const std::shared_ptr<KMime::Message> message)
Q_EMIT htmlChanged();
}
-std::shared_ptr<MimeTreeParser::ObjectTreeParser> MessageParser::parser() const
+std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> MessageParser::parser() const
{
return d->mParser;
}
diff --git a/src/core/messageparser.h b/src/core/messageparser.h
index ca10243..f024311 100644
--- a/src/core/messageparser.h
+++ b/src/core/messageparser.h
@@ -60,7 +60,7 @@ public:
*
* \return A shared pointer to the parser of the last message set via setMessage()
*/
- std::shared_ptr<MimeTreeParser::ObjectTreeParser> parser() const;
+ std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> parser() const;
/*!
* \brief Returns the part model
* \return A pointer to the parts model
diff --git a/src/core/messagepart.cpp b/src/core/messagepart.cpp
index 44c52ec..8c62528 100644
--- a/src/core/messagepart.cpp
+++ b/src/core/messagepart.cpp
@@ -29,7 +29,7 @@
#include <gpgme.h>
using namespace Qt::Literals::StringLiterals;
-using namespace MimeTreeParser;
+using namespace MimeTreeParser::Core;
//------MessagePart-----------------------
MessagePart::MessagePart(ObjectTreeParser *otp, const QString &text, KMime::Content *node)
@@ -333,7 +333,7 @@ void MessagePart::bindLifetime(KMime::Content *node)
mNodesToDelete << node;
}
-KMime::Headers::Base *MimeTreeParser::MessagePart::header(const char *header) const
+KMime::Headers::Base *MimeTreeParser::Core::MessagePart::header(const char *header) const
{
if (node() && node()->hasHeader(header)) {
return node()->headerByType(header);
@@ -392,7 +392,7 @@ void TextMessagePart::parseContent()
continue;
}
- QSharedPointer<MimeTreeParser::MessagePart> mp;
+ QSharedPointer<MimeTreeParser::Core::MessagePart> mp;
auto content = std::make_unique<KMime::Content>();
content->setBody(block.text());
content->parse();
diff --git a/src/core/messagepart.h b/src/core/messagepart.h
index 8680f55..c91f0e6 100644
--- a/src/core/messagepart.h
+++ b/src/core/messagepart.h
@@ -27,7 +27,7 @@ namespace QGpgME
class Protocol;
}
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
class ObjectTreeParser;
@@ -37,7 +37,7 @@ class AlternativeMessagePart;
class SignedMessagePart;
class EncryptedMessagePart;
/*!
- * \class MimeTreeParser::MessagePart
+ * \class MimeTreeParser::Core::MessagePart
* \inmodule MimeTreeParserCore
* \inheaderfile MimeTreeParserCore/MessagePart
*/
@@ -280,7 +280,7 @@ public:
* \param node The MIME content node
* \param onlyOneMimePart If true, only parse one MIME part
*/
- MimeMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node, bool onlyOneMimePart = false);
+ MimeMessagePart(MimeTreeParser::Core::ObjectTreeParser *otp, KMime::Content *node, bool onlyOneMimePart = false);
/*!
* \brief Destroys the MimeMessagePart
*/
@@ -316,7 +316,7 @@ public:
* \param otp The object tree parser
* \param node The MIME content node
*/
- MessagePartList(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node);
+ MessagePartList(MimeTreeParser::Core::ObjectTreeParser *otp, KMime::Content *node);
/*!
* \brief Destroys the MessagePartList
*/
@@ -345,7 +345,7 @@ public:
* \param otp The object tree parser
* \param node The MIME content node
*/
- TextMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node);
+ TextMessagePart(MimeTreeParser::Core::ObjectTreeParser *otp, KMime::Content *node);
/*!
* \brief Destroys the TextMessagePart
*/
@@ -364,7 +364,7 @@ public:
* \param otp The object tree parser
* \param node The MIME content node
*/
- AttachmentMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node);
+ AttachmentMessagePart(MimeTreeParser::Core::ObjectTreeParser *otp, KMime::Content *node);
/*!
* \brief Destroys the AttachmentMessagePart
*/
@@ -388,7 +388,7 @@ public:
* \param otp The object tree parser
* \param node The MIME content node
*/
- HtmlMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node);
+ HtmlMessagePart(MimeTreeParser::Core::ObjectTreeParser *otp, KMime::Content *node);
/*!
* \brief Destroys the HtmlMessagePart
@@ -421,7 +421,7 @@ public:
* \param otp The object tree parser
* \param node The MIME content node
*/
- AlternativeMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node);
+ AlternativeMessagePart(MimeTreeParser::Core::ObjectTreeParser *otp, KMime::Content *node);
/*!
* \brief Destroys the AlternativeMessagePart
*/
@@ -478,7 +478,7 @@ public:
* \param node The MIME content node
* \param cryptoProto The cryptography protocol handler
*/
- CertMessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node, QGpgME::Protocol *cryptoProto);
+ CertMessagePart(MimeTreeParser::Core::ObjectTreeParser *otp, KMime::Content *node, QGpgME::Protocol *cryptoProto);
/*!
* \brief Destroys the CertMessagePart
*/
@@ -505,7 +505,7 @@ public:
* \param node The MIME content node
* \param message The RFC 822 message
*/
- EncapsulatedRfc822MessagePart(MimeTreeParser::ObjectTreeParser *otp, KMime::Content *node, const std::shared_ptr<KMime::Message> &message);
+ EncapsulatedRfc822MessagePart(MimeTreeParser::Core::ObjectTreeParser *otp, KMime::Content *node, const std::shared_ptr<KMime::Message> &message);
/*!
* \brief Destroys the EncapsulatedRfc822MessagePart
*/
diff --git a/src/core/objecttreeparser.cpp b/src/core/objecttreeparser.cpp
index 7fdd1e6..756a983 100644
--- a/src/core/objecttreeparser.cpp
+++ b/src/core/objecttreeparser.cpp
@@ -22,7 +22,7 @@
#include <QTextStream>
#include <QUrl>
-using namespace MimeTreeParser;
+using namespace MimeTreeParser::Core;
using namespace Qt::Literals::StringLiterals;
/*
* Collect message parts bottom up.
@@ -64,10 +64,10 @@ QString ObjectTreeParser::plainTextContent()
if (part->isAttachment()) {
return false;
}
- if (dynamic_cast<MimeTreeParser::TextMessagePart *>(part.data())) {
+ if (dynamic_cast<MimeTreeParser::Core::TextMessagePart *>(part.data())) {
return true;
}
- if (dynamic_cast<MimeTreeParser::AlternativeMessagePart *>(part.data())) {
+ if (dynamic_cast<MimeTreeParser::Core::AlternativeMessagePart *>(part.data())) {
return true;
}
return false;
@@ -89,16 +89,16 @@ QString ObjectTreeParser::htmlContent()
return true;
},
[](const QSharedPointer<MessagePart> &part) {
- if (dynamic_cast<MimeTreeParser::HtmlMessagePart *>(part.data())) {
+ if (dynamic_cast<MimeTreeParser::Core::HtmlMessagePart *>(part.data())) {
return true;
}
- if (dynamic_cast<MimeTreeParser::AlternativeMessagePart *>(part.data())) {
+ if (dynamic_cast<MimeTreeParser::Core::AlternativeMessagePart *>(part.data())) {
return true;
}
return false;
});
for (const auto &part : std::as_const(contentParts)) {
- if (auto p = dynamic_cast<MimeTreeParser::AlternativeMessagePart *>(part.data())) {
+ if (auto p = dynamic_cast<MimeTreeParser::Core::AlternativeMessagePart *>(part.data())) {
content += p->htmlContent();
} else {
content += part->text();
@@ -118,7 +118,7 @@ bool ObjectTreeParser::hasEncryptedParts() const
return true;
},
[&result](const QSharedPointer<MessagePart> &part) {
- if (dynamic_cast<MimeTreeParser::EncryptedMessagePart *>(part.data())) {
+ if (dynamic_cast<MimeTreeParser::Core::EncryptedMessagePart *>(part.data())) {
result = true;
}
return false;
@@ -137,7 +137,7 @@ bool ObjectTreeParser::hasSignedParts() const
return true;
},
[&result](const QSharedPointer<MessagePart> &part) {
- if (dynamic_cast<MimeTreeParser::SignedMessagePart *>(part.data())) {
+ if (dynamic_cast<MimeTreeParser::Core::SignedMessagePart *>(part.data())) {
result = true;
}
return false;
@@ -228,19 +228,19 @@ QList<QSharedPointer<MessagePart>> ObjectTreeParser::collectContentParts(QShared
if (start.data() == part.data()) {
return true;
}
- if (auto encapsulatedPart = part.dynamicCast<MimeTreeParser::EncapsulatedRfc822MessagePart>()) {
+ if (auto encapsulatedPart = part.dynamicCast<MimeTreeParser::Core::EncapsulatedRfc822MessagePart>()) {
return false;
}
return true;
},
[start](const QSharedPointer<MessagePart> &part) {
- if (const auto attachment = dynamic_cast<MimeTreeParser::AttachmentMessagePart *>(part.data())) {
+ if (const auto attachment = dynamic_cast<MimeTreeParser::Core::AttachmentMessagePart *>(part.data())) {
return attachment->mimeType() == "text/calendar"_ba;
- } else if (dynamic_cast<MimeTreeParser::AlternativeMessagePart *>(part.data())) {
+ } else if (dynamic_cast<MimeTreeParser::Core::AlternativeMessagePart *>(part.data())) {
return true;
- } else if (dynamic_cast<MimeTreeParser::HeadersPart *>(part.data())) {
+ } else if (dynamic_cast<MimeTreeParser::Core::HeadersPart *>(part.data())) {
return false;
- } else if (dynamic_cast<MimeTreeParser::EncapsulatedRfc822MessagePart *>(part.data())) {
+ } else if (dynamic_cast<MimeTreeParser::Core::EncapsulatedRfc822MessagePart *>(part.data())) {
if (start.data() == part.data()) {
return false;
}
@@ -276,7 +276,7 @@ void ObjectTreeParser::decryptAndVerify()
return true;
},
[](const QSharedPointer<MessagePart> &part) {
- if (const auto enc = dynamic_cast<MimeTreeParser::EncryptedMessagePart *>(part.data())) {
+ if (const auto enc = dynamic_cast<MimeTreeParser::Core::EncryptedMessagePart *>(part.data())) {
enc->startDecryption();
}
return false;
@@ -288,7 +288,7 @@ void ObjectTreeParser::decryptAndVerify()
return true;
},
[](const QSharedPointer<MessagePart> &part) {
- if (const auto enc = dynamic_cast<MimeTreeParser::SignedMessagePart *>(part.data())) {
+ if (const auto enc = dynamic_cast<MimeTreeParser::Core::SignedMessagePart *>(part.data())) {
enc->startVerification();
}
return false;
@@ -373,7 +373,7 @@ QSharedPointer<MessagePart> ObjectTreeParser::parsedPart() const
*/
QList<QSharedPointer<MessagePart>> ObjectTreeParser::processType(KMime::Content *node, const QByteArray &mediaType, const QByteArray &subType)
{
- static MimeTreeParser::BodyPartFormatterBaseFactory factory;
+ static MimeTreeParser::Core::BodyPartFormatterBaseFactory factory;
const auto sub = factory.subtypeRegistry(mediaType.constData());
const auto range = sub.equal_range(subType.constData());
for (auto it = range.first; it != range.second; ++it) {
diff --git a/src/core/objecttreeparser.h b/src/core/objecttreeparser.h
index 8cea1de..d0a9a9d 100644
--- a/src/core/objecttreeparser.h
+++ b/src/core/objecttreeparser.h
@@ -19,11 +19,11 @@ namespace KMime
class Content;
}
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
/*!
- \class MimeTreeParser::ObjectTreeParser
+ \class MimeTreeParser::Core::ObjectTreeParser
\inmodule MimeTreeParserCore
\inheaderfile MimeTreeParserCore/ObjectTreeParser
diff --git a/src/core/partmetadata.h b/src/core/partmetadata.h
index 1821578..61bce4d 100644
--- a/src/core/partmetadata.h
+++ b/src/core/partmetadata.h
@@ -9,7 +9,7 @@
#include <gpgme++/context.h>
#include <gpgme++/verificationresult.h>
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
class PartMetaData
diff --git a/src/core/partmodel.cpp b/src/core/partmodel.cpp
index 951182c..a66d0a7 100644
--- a/src/core/partmodel.cpp
+++ b/src/core/partmodel.cpp
@@ -21,10 +21,10 @@
#include <gpgme++/verificationresult.h>
using namespace Qt::Literals::StringLiterals;
-static std::optional<GpgME::Signature> signatureFromMessagePart(MimeTreeParser::MessagePart *messagePart)
+static std::optional<GpgME::Signature> signatureFromMessagePart(MimeTreeParser::Core::MessagePart *messagePart)
{
const auto signatureState = messagePart->signatureState();
- const bool messageIsSigned = signatureState == MimeTreeParser::KMMsgFullySigned;
+ const bool messageIsSigned = signatureState == MimeTreeParser::Core::KMMsgFullySigned;
if (!messageIsSigned) {
return std::nullopt;
@@ -117,7 +117,7 @@ static QString addCss(const QString &s)
class PartModelPrivate
{
public:
- PartModelPrivate(PartModel *q_ptr, const std::shared_ptr<MimeTreeParser::ObjectTreeParser> &parser)
+ PartModelPrivate(PartModel *q_ptr, const std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> &parser)
: q(q_ptr)
, mParser(parser)
{
@@ -126,7 +126,7 @@ public:
~PartModelPrivate() = default;
- void checkPart(const QSharedPointer<MimeTreeParser::MessagePart> part)
+ void checkPart(const QSharedPointer<MimeTreeParser::Core::MessagePart> part)
{
mMimeTypeCache[part.data()] = part->mimeType();
// Extract the content of the part and
@@ -134,22 +134,22 @@ public:
}
// Recursively find encapsulated messages
- void findEncapsulated(const QSharedPointer<MimeTreeParser::EncapsulatedRfc822MessagePart> &e)
+ void findEncapsulated(const QSharedPointer<MimeTreeParser::Core::EncapsulatedRfc822MessagePart> &e)
{
mEncapsulatedParts[e.data()] = mParser->collectContentParts(e);
for (const auto &subPart : std::as_const(mEncapsulatedParts[e.data()])) {
checkPart(subPart);
mParents[subPart.data()] = e.data();
- if (auto encapsulatedSub = subPart.dynamicCast<MimeTreeParser::EncapsulatedRfc822MessagePart>()) {
+ if (auto encapsulatedSub = subPart.dynamicCast<MimeTreeParser::Core::EncapsulatedRfc822MessagePart>()) {
findEncapsulated(encapsulatedSub);
}
}
}
- QVariant extractContent(MimeTreeParser::MessagePart *messagePart)
+ QVariant extractContent(MimeTreeParser::Core::MessagePart *messagePart)
{
- if (auto alternativePart = dynamic_cast<MimeTreeParser::AlternativeMessagePart *>(messagePart)) {
- if (alternativePart->availableModes().contains(MimeTreeParser::AlternativeMessagePart::MultipartIcal)) {
+ if (auto alternativePart = dynamic_cast<MimeTreeParser::Core::AlternativeMessagePart *>(messagePart)) {
+ if (alternativePart->availableModes().contains(MimeTreeParser::Core::AlternativeMessagePart::MultipartIcal)) {
return alternativePart->icalContent();
}
}
@@ -171,13 +171,13 @@ public:
const auto result = PartModel::trim(html);
isTrimmed = result.second;
Q_EMIT q->trimMailChanged();
- return MimeTreeParser::linkify(result.first);
+ return MimeTreeParser::Core::linkify(result.first);
}
- return MimeTreeParser::linkify(html);
+ return MimeTreeParser::Core::linkify(html);
};
if (messagePart->isHtml()) {
- if (dynamic_cast<MimeTreeParser::AlternativeMessagePart *>(messagePart)) {
+ if (dynamic_cast<MimeTreeParser::Core::AlternativeMessagePart *>(messagePart)) {
containsHtmlAndPlain = true;
Q_EMIT q->containsHtmlChanged();
if (!showHtml) {
@@ -187,7 +187,7 @@ public:
return addCss(mParser->resolveCidLinks(messagePart->htmlContent()));
}
- if (auto attachmentPart = dynamic_cast<MimeTreeParser::AttachmentMessagePart *>(messagePart)) {
+ if (auto attachmentPart = dynamic_cast<MimeTreeParser::Core::AttachmentMessagePart *>(messagePart)) {
auto node = attachmentPart->node();
if (node && mMimeTypeCache[attachmentPart] == "text/calendar"_ba) {
return node->decodedBody();
@@ -197,7 +197,7 @@ public:
return preprocessPlaintext(messagePart->text());
}
- QVariant contentForPart(MimeTreeParser::MessagePart *messagePart) const
+ QVariant contentForPart(MimeTreeParser::Core::MessagePart *messagePart) const
{
return mContents.value(messagePart);
}
@@ -211,7 +211,7 @@ public:
isTrimmed = false;
const auto parts = mParser->collectContentParts();
- QList<QSharedPointer<MimeTreeParser::MessagePart>> filteredParts;
+ QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> filteredParts;
for (const auto &part : parts) {
if (part->node()) {
@@ -229,7 +229,7 @@ public:
for (const auto &part : std::as_const(filteredParts)) {
checkPart(part);
- if (auto encapsulatedPart = part.dynamicCast<MimeTreeParser::EncapsulatedRfc822MessagePart>()) {
+ if (auto encapsulatedPart = part.dynamicCast<MimeTreeParser::Core::EncapsulatedRfc822MessagePart>()) {
findEncapsulated(encapsulatedPart);
}
}
@@ -244,19 +244,19 @@ public:
}
PartModel *const q;
- QList<QSharedPointer<MimeTreeParser::MessagePart>> mParts;
- QHash<MimeTreeParser::MessagePart *, QByteArray> mMimeTypeCache;
- QHash<MimeTreeParser::MessagePart *, QList<QSharedPointer<MimeTreeParser::MessagePart>>> mEncapsulatedParts;
- QHash<MimeTreeParser::MessagePart *, MimeTreeParser::MessagePart *> mParents;
- QMap<MimeTreeParser::MessagePart *, QVariant> mContents;
- std::shared_ptr<MimeTreeParser::ObjectTreeParser> mParser;
+ QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> mParts;
+ QHash<MimeTreeParser::Core::MessagePart *, QByteArray> mMimeTypeCache;
+ QHash<MimeTreeParser::Core::MessagePart *, QList<QSharedPointer<MimeTreeParser::Core::MessagePart>>> mEncapsulatedParts;
+ QHash<MimeTreeParser::Core::MessagePart *, MimeTreeParser::Core::MessagePart *> mParents;
+ QMap<MimeTreeParser::Core::MessagePart *, QVariant> mContents;
+ std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> mParser;
bool showHtml{false};
bool containsHtmlAndPlain{false};
bool trimMail{false};
bool isTrimmed{false};
};
-PartModel::PartModel(std::shared_ptr<MimeTreeParser::ObjectTreeParser> parser, QObject *parent)
+PartModel::PartModel(std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> parser, QObject *parent)
: QAbstractItemModel(parent)
, d(std::unique_ptr<PartModelPrivate>(new PartModelPrivate(this, parser)))
{
@@ -333,8 +333,8 @@ QModelIndex PartModel::index(int row, int column, const QModelIndex &parent) con
return QModelIndex();
}
if (parent.isValid()) {
- const auto part = static_cast<MimeTreeParser::MessagePart *>(parent.internalPointer());
- auto encapsulatedPart = dynamic_cast<MimeTreeParser::EncapsulatedRfc822MessagePart *>(part);
+ const auto part = static_cast<MimeTreeParser::Core::MessagePart *>(parent.internalPointer());
+ auto encapsulatedPart = dynamic_cast<MimeTreeParser::Core::EncapsulatedRfc822MessagePart *>(part);
if (encapsulatedPart) {
const auto parts = d->mEncapsulatedParts[encapsulatedPart];
@@ -350,7 +350,7 @@ QModelIndex PartModel::index(int row, int column, const QModelIndex &parent) con
return QModelIndex();
}
-SignatureInfo encryptionInfo(MimeTreeParser::MessagePart *messagePart)
+SignatureInfo encryptionInfo(MimeTreeParser::Core::MessagePart *messagePart)
{
SignatureInfo signatureInfo;
const auto encryptions = messagePart->encryptions();
@@ -377,7 +377,7 @@ const T *findHeader(const KMime::Content *content)
return findHeader<T>(content->parent());
}
-PartModel::SecurityLevel PartModel::signatureSecurityLevel(MimeTreeParser::MessagePart *messagePart)
+PartModel::SecurityLevel PartModel::signatureSecurityLevel(MimeTreeParser::Core::MessagePart *messagePart)
{
auto signature = signatureFromMessagePart(messagePart);
if (!signature) {
@@ -399,7 +399,7 @@ PartModel::SecurityLevel PartModel::signatureSecurityLevel(MimeTreeParser::Messa
return SecurityLevel::NotSoGood;
}
-QString PartModel::signatureDetails(MimeTreeParser::MessagePart *messagePart)
+QString PartModel::signatureDetails(MimeTreeParser::Core::MessagePart *messagePart)
{
auto signature = signatureFromMessagePart(messagePart);
if (!signature) {
@@ -423,15 +423,15 @@ QString PartModel::signatureDetails(MimeTreeParser::MessagePart *messagePart)
return Kleo::Formatting::prettySignature(*signature, {});
}
-static bool isEncapsulatingPart(MimeTreeParser::MessagePart *part)
+static bool isEncapsulatingPart(MimeTreeParser::Core::MessagePart *part)
{
- return qobject_cast<MimeTreeParser::SignedMessagePart *>(part) || qobject_cast<MimeTreeParser::EncryptedMessagePart *>(part)
- || qobject_cast<MimeTreeParser::EncapsulatedRfc822MessagePart *>(part);
+ return qobject_cast<MimeTreeParser::Core::SignedMessagePart *>(part) || qobject_cast<MimeTreeParser::Core::EncryptedMessagePart *>(part)
+ || qobject_cast<MimeTreeParser::Core::EncapsulatedRfc822MessagePart *>(part);
}
-static QList<QSharedPointer<MimeTreeParser::MessagePart>> getAttachmentChildParts(MimeTreeParser::MessagePart *parentPart)
+static QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> getAttachmentChildParts(MimeTreeParser::Core::MessagePart *parentPart)
{
- QList<QSharedPointer<MimeTreeParser::MessagePart>> ret;
+ QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> ret;
for (auto sub : parentPart->subParts()) {
if (sub->isAttachment()) {
ret.append(sub);
@@ -442,7 +442,7 @@ static QList<QSharedPointer<MimeTreeParser::MessagePart>> getAttachmentChildPart
return ret;
}
-static MimeTreeParser::MessagePart *encapsulatingPart(MimeTreeParser::MessagePart *part)
+static MimeTreeParser::Core::MessagePart *encapsulatingPart(MimeTreeParser::Core::MessagePart *part)
{
auto parent = part;
while (parent->parentPart() && !isEncapsulatingPart(parent)) {
@@ -458,20 +458,20 @@ QVariant PartModel::data(const QModelIndex &index, int role) const
}
if (index.internalPointer()) {
- const auto messagePart = static_cast<MimeTreeParser::MessagePart *>(index.internalPointer());
+ const auto messagePart = static_cast<MimeTreeParser::Core::MessagePart *>(index.internalPointer());
// qWarning() << "Found message part " << messagePart->metaObject()->className() << messagePart->partMetaData()->status << messagePart->error();
Q_ASSERT(messagePart);
switch (role) {
case Qt::DisplayRole:
return u"Content%1"_s;
case SenderRole: {
- if (auto e = dynamic_cast<MimeTreeParser::EncapsulatedRfc822MessagePart *>(messagePart)) {
+ if (auto e = dynamic_cast<MimeTreeParser::Core::EncapsulatedRfc822MessagePart *>(messagePart)) {
return e->from();
}
return {};
}
case DateRole: {
- if (auto e = dynamic_cast<MimeTreeParser::EncapsulatedRfc822MessagePart *>(messagePart)) {
+ if (auto e = dynamic_cast<MimeTreeParser::Core::EncapsulatedRfc822MessagePart *>(messagePart)) {
return e->date();
}
return {};
@@ -480,15 +480,15 @@ QVariant PartModel::data(const QModelIndex &index, int role) const
if (messagePart->error()) {
return QVariant::fromValue(Types::Error);
}
- if (dynamic_cast<MimeTreeParser::EncapsulatedRfc822MessagePart *>(messagePart)) {
+ if (dynamic_cast<MimeTreeParser::Core::EncapsulatedRfc822MessagePart *>(messagePart)) {
return QVariant::fromValue(Types::Encapsulated);
}
- if (auto alternativePart = dynamic_cast<MimeTreeParser::AlternativeMessagePart *>(messagePart)) {
- if (alternativePart->availableModes().contains(MimeTreeParser::AlternativeMessagePart::MultipartIcal)) {
+ if (auto alternativePart = dynamic_cast<MimeTreeParser::Core::AlternativeMessagePart *>(messagePart)) {
+ if (alternativePart->availableModes().contains(MimeTreeParser::Core::AlternativeMessagePart::MultipartIcal)) {
return QVariant::fromValue(Types::Ical);
}
}
- if (auto attachmentPart = dynamic_cast<MimeTreeParser::AttachmentMessagePart *>(messagePart)) {
+ if (auto attachmentPart = dynamic_cast<MimeTreeParser::Core::AttachmentMessagePart *>(messagePart)) {
auto node = attachmentPart->node();
if (!node) {
qWarning() << "no content for attachment";
@@ -546,7 +546,7 @@ QVariant PartModel::data(const QModelIndex &index, int role) const
auto parentPart = encapsulatingPart(messagePart);
// only show attachments after the last content part in a given parent
if (index.row() < rowCount(parent(index)) - 1) {
- auto nextPart = static_cast<MimeTreeParser::MessagePart *>(this->index(index.row() + 1, 0, parent(index)).internalPointer());
+ auto nextPart = static_cast<MimeTreeParser::Core::MessagePart *>(this->index(index.row() + 1, 0, parent(index)).internalPointer());
if (nextPart && encapsulatingPart(nextPart) == parentPart) {
return QVariant();
}
@@ -578,7 +578,7 @@ QVariant PartModel::data(const QModelIndex &index, int role) const
case EncryptionSecurityLevelRole: {
// Color displayed for the encryption info box
const auto encryption = messagePart->encryptionState();
- const bool messageIsEncrypted = encryption == MimeTreeParser::KMMsgFullyEncrypted;
+ const bool messageIsEncrypted = encryption == MimeTreeParser::Core::KMMsgFullyEncrypted;
if (messagePart->error()) {
return SecurityLevel::Bad;
@@ -588,7 +588,7 @@ QVariant PartModel::data(const QModelIndex &index, int role) const
}
case EncryptionIconNameRole: {
const auto encryption = messagePart->encryptionState();
- const bool messageIsEncrypted = encryption == MimeTreeParser::KMMsgFullyEncrypted;
+ const bool messageIsEncrypted = encryption == MimeTreeParser::Core::KMMsgFullyEncrypted;
if (messagePart->error()) {
return u"data-error"_s;
@@ -619,8 +619,8 @@ QVariant PartModel::data(const QModelIndex &index, int role) const
return messagePart->error();
case ErrorString: {
switch (messagePart->error()) {
- case MimeTreeParser::MessagePart::NoKeyError: {
- if (auto encryptedMessagePart = dynamic_cast<MimeTreeParser::EncryptedMessagePart *>(messagePart)) {
+ case MimeTreeParser::Core::MessagePart::NoKeyError: {
+ if (auto encryptedMessagePart = dynamic_cast<MimeTreeParser::Core::EncryptedMessagePart *>(messagePart)) {
if (encryptedMessagePart->isNoSecKey()) {
QString errorMessage = i18ndc("mimetreeparser", "@info:status", "You cannot decrypt this message.");
if (!encryptedMessagePart->decryptRecipients().empty()) {
@@ -631,7 +631,7 @@ QVariant PartModel::data(const QModelIndex &index, int role) const
"The message is encrypted for the following recipients:",
encryptedMessagePart->decryptRecipients().size());
errorMessage +=
- MimeTreeParser::decryptRecipientsToHtml(encryptedMessagePart->decryptRecipients(), encryptedMessagePart->cryptoProto());
+ MimeTreeParser::Core::decryptRecipientsToHtml(encryptedMessagePart->decryptRecipients(), encryptedMessagePart->cryptoProto());
}
return errorMessage;
}
@@ -640,11 +640,11 @@ QVariant PartModel::data(const QModelIndex &index, int role) const
return messagePart->errorString();
- case MimeTreeParser::MessagePart::UserCancelled:
+ case MimeTreeParser::Core::MessagePart::UserCancelled:
return i18ndc("mimetreeparser", "@info:status", "Decryption was canceled");
- case MimeTreeParser::MessagePart::PassphraseError:
+ case MimeTreeParser::Core::MessagePart::PassphraseError:
return i18ndc("mimetreeparser", "@info:status", "Wrong passphrase");
- case MimeTreeParser::MessagePart::UnknownError:
+ case MimeTreeParser::Core::MessagePart::UnknownError:
break;
default:
break;
@@ -659,7 +659,7 @@ QVariant PartModel::data(const QModelIndex &index, int role) const
QModelIndex PartModel::parent(const QModelIndex &index) const
{
if (index.isValid()) {
- if (auto indexPart = static_cast<MimeTreeParser::MessagePart *>(index.internalPointer())) {
+ if (auto indexPart = static_cast<MimeTreeParser::Core::MessagePart *>(index.internalPointer())) {
for (const auto &part : std::as_const(d->mParts)) {
if (part.data() == indexPart) {
return QModelIndex();
@@ -685,8 +685,8 @@ QModelIndex PartModel::parent(const QModelIndex &index) const
int PartModel::rowCount(const QModelIndex &parent) const
{
if (parent.isValid()) {
- const auto part = static_cast<MimeTreeParser::MessagePart *>(parent.internalPointer());
- auto encapsulatedPart = dynamic_cast<MimeTreeParser::EncapsulatedRfc822MessagePart *>(part);
+ const auto part = static_cast<MimeTreeParser::Core::MessagePart *>(parent.internalPointer());
+ auto encapsulatedPart = dynamic_cast<MimeTreeParser::Core::EncapsulatedRfc822MessagePart *>(part);
if (encapsulatedPart) {
const auto parts = d->mEncapsulatedParts[encapsulatedPart];
@@ -702,10 +702,10 @@ int PartModel::columnCount(const QModelIndex &) const
return 1;
}
-QSharedPointer<MimeTreeParser::MessagePart> PartModel::messagePart(const QModelIndex &index) const
+QSharedPointer<MimeTreeParser::Core::MessagePart> PartModel::messagePart(const QModelIndex &index) const
{
if (index.isValid()) {
- auto nakedPointer = static_cast<MimeTreeParser::MessagePart *>(index.internalPointer());
+ auto nakedPointer = static_cast<MimeTreeParser::Core::MessagePart *>(index.internalPointer());
for (const auto &sharedPointer : std::as_const(d->mParts)) {
if (sharedPointer.data() == nakedPointer) {
return sharedPointer;
diff --git a/src/core/partmodel.h b/src/core/partmodel.h
index c55d643..7b5770e 100644
--- a/src/core/partmodel.h
+++ b/src/core/partmodel.h
@@ -20,13 +20,13 @@ namespace QGpgME
class Protocol;
}
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
class ObjectTreeParser;
}
class PartModelPrivate;
/*!
- * \class MimeTreeParser::PartModel
+ * \class PartModel
* \inmodule MimeTreeParserCore
* \inheaderfile MimeTreeParserCore/PartModel
*/
@@ -42,7 +42,7 @@ public:
* \brief Constructs a PartModel
* \param parser The object tree parser
*/
- PartModel(std::shared_ptr<MimeTreeParser::ObjectTreeParser> parser, QObject *parent);
+ PartModel(std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> parser, QObject *parent);
/*!
* \brief Destroys the PartModel
*/
@@ -99,7 +99,7 @@ public:
[[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
[[nodiscard]] int columnCount(const QModelIndex &parent = QModelIndex()) const override;
- template<typename T = MimeTreeParser::MessagePart>
+ template<typename T = MimeTreeParser::Core::MessagePart>
[[nodiscard]] QSharedPointer<T> part(const QModelIndex &index) const
{
return messagePart(index).dynamicCast<T>();
@@ -141,13 +141,13 @@ public:
* \param messagePart The message part to check
* \return The signature security level
*/
- static SecurityLevel signatureSecurityLevel(MimeTreeParser::MessagePart *messagePart);
+ static SecurityLevel signatureSecurityLevel(MimeTreeParser::Core::MessagePart *messagePart);
/*!
* \brief Returns the signature details for a message part
* \param messagePart The message part to check
* \return A string with signature details
*/
- static QString signatureDetails(MimeTreeParser::MessagePart *messagePart);
+ static QString signatureDetails(MimeTreeParser::Core::MessagePart *messagePart);
Q_SIGNALS:
/*!
@@ -165,11 +165,11 @@ Q_SIGNALS:
private:
std::unique_ptr<PartModelPrivate> d;
- QSharedPointer<MimeTreeParser::MessagePart> messagePart(const QModelIndex &index) const;
+ QSharedPointer<MimeTreeParser::Core::MessagePart> messagePart(const QModelIndex &index) const;
};
/*!
- * \class MimeTreeParser::SignatureInfo
+ * \class SignatureInfo
* \inmodule MimeTreeParserCore
* \inheaderfile MimeTreeParserCore/PartModel
* \brief Contains information about a message signature
diff --git a/src/core/urlhandler.h b/src/core/urlhandler.h
index 54045e9..34f0517 100644
--- a/src/core/urlhandler.h
+++ b/src/core/urlhandler.h
@@ -9,7 +9,7 @@
#include <QObject>
#include <QWindow>
/*!
- * \class MimeTreeParser::UrlHandler
+ * \class UrlHandler
* \inmodule MimeTreeParserCore
* \inheaderfile MimeTreeParserCore/UrlHandler
*/
diff --git a/src/core/utils.cpp b/src/core/utils.cpp
index 12c96b5..1f7cde4 100644
--- a/src/core/utils.cpp
+++ b/src/core/utils.cpp
@@ -11,9 +11,9 @@ using namespace Qt::Literals::StringLiterals;
#include <Libkleo/DnAttributes>
#include <Libkleo/Formatting>
-using namespace MimeTreeParser;
+using namespace MimeTreeParser::Core;
-KMime::Content *MimeTreeParser::findTypeInDirectChildren(KMime::Content *content, const QByteArray &mimeType)
+KMime::Content *MimeTreeParser::Core::findTypeInDirectChildren(KMime::Content *content, const QByteArray &mimeType)
{
const auto contents = content->contents();
for (const auto child : contents) {
@@ -24,8 +24,8 @@ KMime::Content *MimeTreeParser::findTypeInDirectChildren(KMime::Content *content
return nullptr;
}
-QString MimeTreeParser::decryptRecipientsToHtml(const std::vector<std::pair<GpgME::DecryptionResult::Recipient, GpgME::Key>> &recipients,
- const QGpgME::Protocol *cryptoProto)
+QString MimeTreeParser::Core::decryptRecipientsToHtml(const std::vector<std::pair<GpgME::DecryptionResult::Recipient, GpgME::Key>> &recipients,
+ const QGpgME::Protocol *cryptoProto)
{
QString text = u"<ul>"_s;
for (const auto &recipientIt : recipients) {
@@ -53,7 +53,7 @@ QString MimeTreeParser::decryptRecipientsToHtml(const std::vector<std::pair<GpgM
return text;
}
-QString MimeTreeParser::dnToDisplayName(const QGpgME::DN &dn)
+QString MimeTreeParser::Core::dnToDisplayName(const QGpgME::DN &dn)
{
QString displayName = dn[u"CN"_s];
if (displayName.isEmpty()) {
diff --git a/src/core/utils.h b/src/core/utils.h
index d88e669..798b263 100644
--- a/src/core/utils.h
+++ b/src/core/utils.h
@@ -17,7 +17,7 @@
#include "mimetreeparser_core_export.h"
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
[[nodiscard]] KMime::Content *findTypeInDirectChildren(KMime::Content *content, const QByteArray &mimeType);
diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt
index e21833b..3a0c26c 100644
--- a/src/widgets/CMakeLists.txt
+++ b/src/widgets/CMakeLists.txt
@@ -82,8 +82,6 @@ set_target_properties(
MimeTreeParserWidgets
)
-target_link_options(KPim6MimeTreeParserWidgets PRIVATE "LINKER:-Bsymbolic")
-
ecm_generate_pri_file(BASE_NAME MimeTreeParserWidgets
LIB_NAME KPim6MimeTreeParserWidgets
DEPS "MimeTreeParserWidgets"
diff --git a/src/widgets/messagecontainerwidget.cpp b/src/widgets/messagecontainerwidget.cpp
index 0d3ded6..beba18c 100644
--- a/src/widgets/messagecontainerwidget.cpp
+++ b/src/widgets/messagecontainerwidget.cpp
@@ -56,7 +56,7 @@ KMessageWidget::MessageType getType(PartModel::SecurityLevel securityLevel)
class AttachmentBox : public QFrame
{
public:
- AttachmentBox(const QList<QSharedPointer<MimeTreeParser::MessagePart>> &attachments, MessageWidgetContainer *parent)
+ AttachmentBox(const QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> &attachments, MessageWidgetContainer *parent)
: QFrame(parent)
, maxWidgetWidth(50)
, oldWidth(width())
@@ -81,7 +81,7 @@ public:
option.initFrom(this);
pic->setPixmap(icon.pixmap(style()->pixelMetric(QStyle::PM_SmallIconSize, &option, this)));
innerLayout->addWidget(pic);
- innerLayout->addWidget(new KSqueezedTextLabel(attachment->filename(MimeTreeParser::MessagePart::FallbackToNameOrPlaceholder)));
+ innerLayout->addWidget(new KSqueezedTextLabel(attachment->filename(MimeTreeParser::Core::MessagePart::FallbackToNameOrPlaceholder)));
innerLayout->setStretch(1, 1);
widget->setContextMenuPolicy(Qt::CustomContextMenu);
@@ -228,7 +228,7 @@ void MessageWidgetContainer::createLayout(const QModelIndex &idx)
if (url.path() == QLatin1StringView("showDetails")) {
QString newText = text + QLatin1Char(' ') + i18n("The message is encrypted for the following recipients:");
- newText += MimeTreeParser::decryptRecipientsToHtml(m_encryptionInfo.decryptRecipients, m_encryptionInfo.cryptoProto);
+ newText += MimeTreeParser::Core::decryptRecipientsToHtml(m_encryptionInfo.decryptRecipients, m_encryptionInfo.cryptoProto);
encryptionMessage->setText(newText);
return;
@@ -262,7 +262,7 @@ void MessageWidgetContainer::createLayout(const QModelIndex &idx)
m_innerLayout->setContentsMargins({});
vLayout->addLayout(m_innerLayout);
- const auto attachments = idx.data(PartModel::OwnedAttachmentsRole).value<QList<QSharedPointer<MimeTreeParser::MessagePart>>>();
+ const auto attachments = idx.data(PartModel::OwnedAttachmentsRole).value<QList<QSharedPointer<MimeTreeParser::Core::MessagePart>>>();
if (!attachments.isEmpty()) {
vLayout->addWidget(new AttachmentBox(attachments, this));
}
diff --git a/src/widgets/messagecontainerwidget_p.h b/src/widgets/messagecontainerwidget_p.h
index 739b6ee..dadcba7 100644
--- a/src/widgets/messagecontainerwidget_p.h
+++ b/src/widgets/messagecontainerwidget_p.h
@@ -31,7 +31,7 @@ public:
QLayout *innerLayout() const;
Q_SIGNALS:
- void attachmentContextMenu(const QSharedPointer<MimeTreeParser::MessagePart> part, const QPoint &pos);
+ void attachmentContextMenu(const QSharedPointer<MimeTreeParser::Core::MessagePart> part, const QPoint &pos);
protected:
/*!
diff --git a/src/widgets/messageviewer.cpp b/src/widgets/messageviewer.cpp
index 3316306..05c9327 100644
--- a/src/widgets/messageviewer.cpp
+++ b/src/widgets/messageviewer.cpp
@@ -33,6 +33,7 @@
#include <qnamespace.h>
using namespace MimeTreeParser::Widgets;
+using namespace MimeTreeParser::Core;
using namespace Qt::Literals::StringLiterals;
class MessageViewer::Private
@@ -57,18 +58,18 @@ public:
UrlHandler *urlHandler = nullptr;
KMessageWidget *const messageWidget = nullptr;
- QList<QSharedPointer<MimeTreeParser::MessagePart>> partsForActions;
+ QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> partsForActions;
bool fixedFont = false;
- void openSelectedAttachments(const QList<QSharedPointer<MimeTreeParser::MessagePart>> &selectedParts);
- void saveSelectedAttachments(const QList<QSharedPointer<MimeTreeParser::MessagePart>> &selectedParts);
- void showContextMenu(const QList<QSharedPointer<MimeTreeParser::MessagePart>> &parts);
- QList<QSharedPointer<MimeTreeParser::MessagePart>> partsSelectedInView() const;
- void importPublicKey(const QSharedPointer<MimeTreeParser::MessagePart> &part);
+ void openSelectedAttachments(const QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> &selectedParts);
+ void saveSelectedAttachments(const QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> &selectedParts);
+ void showContextMenu(const QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> &parts);
+ QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> partsSelectedInView() const;
+ void importPublicKey(const QSharedPointer<MimeTreeParser::Core::MessagePart> &part);
void recursiveBuildViewer(PartModel *parts, QVBoxLayout *layout, const QModelIndex &parent);
};
-void MessageViewer::Private::openSelectedAttachments(const QList<QSharedPointer<MimeTreeParser::MessagePart>> &selectedParts)
+void MessageViewer::Private::openSelectedAttachments(const QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> &selectedParts)
{
Q_ASSERT(parser);
Q_ASSERT(selectedParts.count() >= 1);
@@ -77,7 +78,7 @@ void MessageViewer::Private::openSelectedAttachments(const QList<QSharedPointer<
}
}
-void MessageViewer::Private::saveSelectedAttachments(const QList<QSharedPointer<MimeTreeParser::MessagePart>> &selectedParts)
+void MessageViewer::Private::saveSelectedAttachments(const QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> &selectedParts)
{
Q_ASSERT(parser);
Q_ASSERT(selectedParts.count() >= 1);
@@ -91,13 +92,13 @@ void MessageViewer::Private::saveSelectedAttachments(const QList<QSharedPointer<
}
}
-void MessageViewer::Private::importPublicKey(const QSharedPointer<MimeTreeParser::MessagePart> &part)
+void MessageViewer::Private::importPublicKey(const QSharedPointer<MimeTreeParser::Core::MessagePart> &part)
{
Q_ASSERT(parser);
parser->attachments()->importPublicKey(part);
}
-void MessageViewer::Private::showContextMenu(const QList<QSharedPointer<MimeTreeParser::MessagePart>> &selectedParts)
+void MessageViewer::Private::showContextMenu(const QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> &selectedParts)
{
const int numberOfParts(selectedParts.count());
QMenu menu;
@@ -127,13 +128,13 @@ void MessageViewer::Private::showContextMenu(const QList<QSharedPointer<MimeTree
menu.exec(QCursor::pos());
}
-QList<QSharedPointer<MimeTreeParser::MessagePart>> MessageViewer::Private::partsSelectedInView() const
+QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> MessageViewer::Private::partsSelectedInView() const
{
const QModelIndexList selectedRows = attachmentView->selectionModel()->selectedRows();
- QList<QSharedPointer<MimeTreeParser::MessagePart>> selectedMessageParts;
+ QList<QSharedPointer<MimeTreeParser::Core::MessagePart>> selectedMessageParts;
selectedMessageParts.reserve(selectedRows.count());
for (const QModelIndex &index : selectedRows) {
- auto part = attachmentView->model()->data(index, AttachmentModel::AttachmentPartRole).value<QSharedPointer<MimeTreeParser::MessagePart>>();
+ auto part = attachmentView->model()->data(index, AttachmentModel::AttachmentPartRole).value<QSharedPointer<MimeTreeParser::Core::MessagePart>>();
selectedMessageParts.append(part);
}
return selectedMessageParts;
@@ -231,7 +232,7 @@ std::shared_ptr<KMime::Message> MessageViewer::message() const
return d->parser ? d->parser->message() : std::shared_ptr<KMime::Message>{};
}
-std::shared_ptr<MimeTreeParser::ObjectTreeParser> MessageViewer::parser() const
+std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> MessageViewer::parser() const
{
return d->parser ? d->parser->parser() : nullptr;
}
@@ -256,7 +257,7 @@ void MessageViewer::Private::recursiveBuildViewer(PartModel *parts, QVBoxLayout
container->innerLayout()->addWidget(label);
lay->addWidget(container);
- connect(container, &MessageWidgetContainer::attachmentContextMenu, q, [this](const QSharedPointer<MimeTreeParser::MessagePart> part) {
+ connect(container, &MessageWidgetContainer::attachmentContextMenu, q, [this](const QSharedPointer<MimeTreeParser::Core::MessagePart> part) {
showContextMenu({part});
});
diff --git a/src/widgets/messageviewer.h b/src/widgets/messageviewer.h
index fc4d114..8806e63 100644
--- a/src/widgets/messageviewer.h
+++ b/src/widgets/messageviewer.h
@@ -14,14 +14,18 @@
class QPainter;
-namespace MimeTreeParser
+namespace MimeTreeParser::Core
{
class ObjectTreeParser;
+}
+
+namespace MimeTreeParser
+{
namespace Widgets
{
/*!
- * \class MimeTreeParser::MessageViewer
+ * \class MimeTreeParser::Widgets::MessageViewer
* \inmodule MimeTreeParserWidgets
* \inheaderfile MimeTreeParserWidgets/MessageViewer
*
@@ -61,7 +65,7 @@ public:
*
* \return A shared pointer to the ObjectTreeParser
*/
- [[nodiscard]] std::shared_ptr<MimeTreeParser::ObjectTreeParser> parser() const;
+ [[nodiscard]] std::shared_ptr<MimeTreeParser::Core::ObjectTreeParser> parser() const;
/*!
* \brief Returns whether a fixed width font is used
* \return True if fixed font is enabled
diff --git a/src/widgets/messageviewerbase_p.cpp b/src/widgets/messageviewerbase_p.cpp
index e47fbe4..95c287e 100644
--- a/src/widgets/messageviewerbase_p.cpp
+++ b/src/widgets/messageviewerbase_p.cpp
@@ -36,6 +36,7 @@
#include <mimetreeparser_widgets_debug.h>
using namespace MimeTreeParser;
+using namespace MimeTreeParser::Core;
using namespace Qt::Literals::StringLiterals;
MessageViewerBasePrivate::MessageViewerBasePrivate(QWidget *qq)
diff --git a/src/widgets/messageviewerdialog.h b/src/widgets/messageviewerdialog.h
index a10a249..3ed1c80 100644
--- a/src/widgets/messageviewerdialog.h
+++ b/src/widgets/messageviewerdialog.h
@@ -19,7 +19,7 @@ namespace Widgets
{
/*!
- * \class MimeTreeParser::MessageViewerDialog
+ * \class MimeTreeParser::Widgets::MessageViewerDialog
* \inmodule MimeTreeParserWidgets
* \inheaderfile MimeTreeParserWidgets/MessageViewerDialog
*
diff --git a/src/widgets/messageviewerwindow.h b/src/widgets/messageviewerwindow.h
index f72cb7c..0d39d14 100644
--- a/src/widgets/messageviewerwindow.h
+++ b/src/widgets/messageviewerwindow.h
@@ -19,7 +19,7 @@ namespace Widgets
{
/*!
- * \class MimeTreeParser::MessageViewerDialog
+ * \class MimeTreeParser::Widgets::MessageViewerWindow
* \inmodule MimeTreeParserWidgets
* \inheaderfile MimeTreeParserWidgets/MessageViewerDialog
*