File indexing completed on 2025-03-09 04:54:12
0001 /* 0002 SPDX-FileCopyrightText: 2009 Constantin Berzan <exit3219@gmail.com> 0003 0004 Based on KMail code by: 0005 SPDX-FileCopyrightText: 1997 Markus Wuebben <markus.wuebben@kde.org> 0006 0007 SPDX-License-Identifier: LGPL-2.0-or-later 0008 */ 0009 0010 #include "attachmentfrommimecontentjob.h" 0011 0012 #include <KMime/Content> 0013 0014 using namespace MessageCore; 0015 using KMime::Content; 0016 0017 class Q_DECL_HIDDEN MessageCore::AttachmentFromMimeContentJob::AttachmentFromMimeContentJobPrivate 0018 { 0019 public: 0020 const Content *mMimeContent = nullptr; 0021 }; 0022 0023 AttachmentFromMimeContentJob::AttachmentFromMimeContentJob(const Content *content, QObject *parent) 0024 : AttachmentLoadJob(parent) 0025 , d(new AttachmentFromMimeContentJobPrivate) 0026 { 0027 d->mMimeContent = content; 0028 } 0029 0030 AttachmentFromMimeContentJob::~AttachmentFromMimeContentJob() = default; 0031 0032 const Content *AttachmentFromMimeContentJob::mimeContent() const 0033 { 0034 return d->mMimeContent; 0035 } 0036 0037 void AttachmentFromMimeContentJob::setMimeContent(const Content *content) 0038 { 0039 d->mMimeContent = content; 0040 } 0041 0042 void AttachmentFromMimeContentJob::doStart() 0043 { 0044 // Create the AttachmentPart. 0045 Q_ASSERT(attachmentPart() == nullptr); 0046 0047 AttachmentPart::Ptr part = AttachmentPart::Ptr(new AttachmentPart); 0048 auto content = const_cast<Content *>(d->mMimeContent); 0049 part->setData(content->decodedContent()); 0050 0051 // Get the details from the MIME headers. 0052 if (auto ct = content->contentType(false)) { 0053 part->setMimeType(ct->mimeType()); 0054 part->setName(ct->name()); 0055 } 0056 0057 if (auto ct = content->contentTransferEncoding(false)) { 0058 part->setEncoding(ct->encoding()); 0059 } 0060 0061 if (auto ct = content->contentDisposition(false)) { 0062 part->setFileName(ct->filename()); 0063 part->setInline(ct->disposition() == KMime::Headers::CDinline); 0064 } 0065 0066 if (auto ct = content->contentDescription(false)) { 0067 part->setDescription(ct->asUnicodeString()); 0068 } 0069 0070 setAttachmentPart(part); 0071 emitResult(); // Success. 0072 } 0073 0074 #include "moc_attachmentfrommimecontentjob.cpp"