Messagelib

decryptverifybodypartmemento.cpp
1/*
2 SPDX-FileCopyrightText: 2014-2025 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#include "decryptverifybodypartmemento.h"
8
9#include <QGpgME/DecryptVerifyJob>
10
11using namespace QGpgME;
12using namespace GpgME;
13using namespace MimeTreeParser;
14
15DecryptVerifyBodyPartMemento::DecryptVerifyBodyPartMemento(DecryptVerifyJob *job, const QByteArray &cipherText)
16 : m_cipherText(cipherText)
17 , m_job(job)
18{
19 Q_ASSERT(m_job);
20}
21
22DecryptVerifyBodyPartMemento::~DecryptVerifyBodyPartMemento()
23{
24 if (m_job) {
25 m_job->slotCancel();
26 }
27}
28
29bool DecryptVerifyBodyPartMemento::start()
30{
31 Q_ASSERT(m_job);
32 if (const Error err = m_job->start(m_cipherText)) {
33 m_dr = DecryptionResult(err);
34 return false;
35 }
36 connect(m_job.data(), &DecryptVerifyJob::result, this, &DecryptVerifyBodyPartMemento::slotResult);
37 setRunning(true);
38 return true;
39}
40
41void DecryptVerifyBodyPartMemento::exec()
42{
43 Q_ASSERT(m_job);
44 QByteArray plainText;
45 setRunning(true);
46 const std::pair<DecryptionResult, VerificationResult> p = m_job->exec(m_cipherText, plainText);
47 saveResult(p.first, p.second, plainText);
48 m_job->deleteLater(); // exec'ed jobs don't delete themselves
49 m_job = nullptr;
50}
51
52void DecryptVerifyBodyPartMemento::saveResult(const DecryptionResult &dr, const VerificationResult &vr, const QByteArray &plainText)
53{
54 Q_ASSERT(m_job);
55 setRunning(false);
56 m_dr = dr;
57 m_vr = vr;
58 m_plainText = plainText;
59 setAuditLog(m_job->auditLogError(), m_job->auditLogAsHtml());
60}
61
62void DecryptVerifyBodyPartMemento::slotResult(const DecryptionResult &dr, const VerificationResult &vr, const QByteArray &plainText)
63{
64 saveResult(dr, vr, plainText);
65 m_job = nullptr;
66 notify();
67}
68
69#include "moc_decryptverifybodypartmemento.cpp"
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Apr 25 2025 11:46:37 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.