1 /* 2 SPDX-FileCopyrightText: 2015-2021 Laurent Montel <montel@kde.org> 3 4 SPDX-License-Identifier: GPL-2.0-or-later 5 */ 6 7 #include "attachmentclipboardjob.h" 8 #include <KLocalizedString> 9 #include <QApplication> 10 #include <QClipboard> 11 #include <QInputDialog> 12 13 using namespace MessageComposer; 14 AttachmentClipBoardJob(QObject * parent)15AttachmentClipBoardJob::AttachmentClipBoardJob(QObject *parent) 16 : MessageCore::AttachmentLoadJob(parent) 17 { 18 } 19 ~AttachmentClipBoardJob()20AttachmentClipBoardJob::~AttachmentClipBoardJob() 21 { 22 } 23 addAttachment(const QByteArray & data,const QString & attachmentName)24void AttachmentClipBoardJob::addAttachment(const QByteArray &data, const QString &attachmentName) 25 { 26 MessageCore::AttachmentPart::Ptr attachment = MessageCore::AttachmentPart::Ptr(new MessageCore::AttachmentPart()); 27 if (!data.isEmpty()) { 28 attachment->setName(attachmentName); 29 attachment->setFileName(attachmentName); 30 attachment->setData(data); 31 attachment->setMimeType("text/plain"); 32 // TODO what about the other fields? 33 } 34 setAttachmentPart(attachment); 35 emitResult(); // Success. 36 } 37 doStart()38void AttachmentClipBoardJob::doStart() 39 { 40 QClipboard *clip = QApplication::clipboard(); 41 const QString clipText = clip->text(); 42 if (clipText.isEmpty()) { 43 setError(KJob::UserDefinedError); 44 setErrorText(i18n("No text found in Clipboard")); 45 emitResult(); 46 } else { 47 bool ok = false; 48 QString attachmentName = QInputDialog::getText(nullptr, i18n("Define Attachment Name"), i18n("Attachment Name:"), {}, {}, &ok); 49 if (ok) { 50 if (attachmentName.isEmpty()) { 51 attachmentName = i18n("Clipboard Text"); 52 } 53 addAttachment(clipText.toUtf8(), attachmentName); 54 } 55 } 56 } 57