From b968ea8ed364238c57c3e74cf2c122cb897cfbea Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 23 May 2017 19:13:13 +0200 Subject: Builds but doesn't link, no formatters yet --- .../otp/decryptverifybodypartmemento.cpp | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 framework/src/domain/mimetreeparser/otp/decryptverifybodypartmemento.cpp (limited to 'framework/src/domain/mimetreeparser/otp/decryptverifybodypartmemento.cpp') diff --git a/framework/src/domain/mimetreeparser/otp/decryptverifybodypartmemento.cpp b/framework/src/domain/mimetreeparser/otp/decryptverifybodypartmemento.cpp new file mode 100644 index 00000000..9810797a --- /dev/null +++ b/framework/src/domain/mimetreeparser/otp/decryptverifybodypartmemento.cpp @@ -0,0 +1,86 @@ +/* + Copyright (c) 2014-2017 Montel Laurent + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "decryptverifybodypartmemento.h" + +#include + +#include + +using namespace QGpgME; +using namespace GpgME; +using namespace MimeTreeParser; + +DecryptVerifyBodyPartMemento::DecryptVerifyBodyPartMemento(DecryptVerifyJob *job, const QByteArray &cipherText) + : CryptoBodyPartMemento(), + m_cipherText(cipherText), + m_job(job) +{ + Q_ASSERT(m_job); +} + +DecryptVerifyBodyPartMemento::~DecryptVerifyBodyPartMemento() +{ + if (m_job) { + m_job->slotCancel(); + } +} + +bool DecryptVerifyBodyPartMemento::start() +{ + Q_ASSERT(m_job); + if (const Error err = m_job->start(m_cipherText)) { + m_dr = DecryptionResult(err); + return false; + } + connect(m_job.data(), &DecryptVerifyJob::result, + this, &DecryptVerifyBodyPartMemento::slotResult); + setRunning(true); + return true; +} + +void DecryptVerifyBodyPartMemento::exec() +{ + Q_ASSERT(m_job); + QByteArray plainText; + setRunning(true); + const std::pair p = m_job->exec(m_cipherText, plainText); + saveResult(p.first, p.second, plainText); + m_job->deleteLater(); // exec'ed jobs don't delete themselves + m_job = nullptr; +} + +void DecryptVerifyBodyPartMemento::saveResult(const DecryptionResult &dr, + const VerificationResult &vr, + const QByteArray &plainText) +{ + Q_ASSERT(m_job); + setRunning(false); + m_dr = dr; + m_vr = vr; + m_plainText = plainText; + setAuditLog(m_job->auditLogError(), m_job->auditLogAsHtml()); +} + +void DecryptVerifyBodyPartMemento::slotResult(const DecryptionResult &dr, + const VerificationResult &vr, + const QByteArray &plainText) +{ + saveResult(dr, vr, plainText); + m_job = nullptr; + notify(); +} -- cgit v1.2.3