From 398375a0ab3b819694435c2e46b759d56b3735e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?= Date: Wed, 4 Jan 2023 11:36:09 +0100 Subject: qt: Allow deferred start of import job * lang/qt/src/importjob.h (ImportJob::startLater): New pure virtual method. * lang/qt/src/qgpgmeimportjob.cpp, lang/qt/src/qgpgmeimportjob.h (QGpgMEImportJob::startLater): New method. * lang/qt/tests/t-import.cpp (ImportTest::testDeferredStart): New. -- This makes it possible to prepare an import job for a deferred start. GnuPG-bug-id: 6323 --- lang/qt/src/importjob.h | 4 ++++ lang/qt/src/qgpgmeimportjob.cpp | 6 ++++++ lang/qt/src/qgpgmeimportjob.h | 4 ++++ 3 files changed, 14 insertions(+) (limited to 'lang/qt/src') diff --git a/lang/qt/src/importjob.h b/lang/qt/src/importjob.h index a81dcf26..0d677bed 100644 --- a/lang/qt/src/importjob.h +++ b/lang/qt/src/importjob.h @@ -5,6 +5,8 @@ Copyright (c) 2004 Klarälvdalens Datakonsult AB Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik Software engineering by Intevation GmbH + Copyright (c) 2023 g10 Code GmbH + Software engineering by Ingo Klöcker QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -88,6 +90,8 @@ public: virtual GpgME::Error start(const QByteArray &keyData) = 0; virtual GpgME::ImportResult exec(const QByteArray &keyData) = 0; + + virtual GpgME::Error startLater(const QByteArray &keyData) = 0; }; } diff --git a/lang/qt/src/qgpgmeimportjob.cpp b/lang/qt/src/qgpgmeimportjob.cpp index 2da54582..9f09ca7c 100644 --- a/lang/qt/src/qgpgmeimportjob.cpp +++ b/lang/qt/src/qgpgmeimportjob.cpp @@ -154,6 +154,12 @@ GpgME::ImportResult QGpgME::QGpgMEImportJob::exec(const QByteArray &keyData) return mResult; } +Error QGpgMEImportJob::startLater(const QByteArray &certData) +{ + setWorkerFunction(std::bind(&import_qba, std::placeholders::_1, certData, importFilter(), keyOrigin(), keyOriginUrl())); + return {}; +} + // PENDING(marc) implement showErrorDialog() void QGpgME::QGpgMEImportJob::resultHook(const result_type &tuple) diff --git a/lang/qt/src/qgpgmeimportjob.h b/lang/qt/src/qgpgmeimportjob.h index 860db226..ec4d39b4 100644 --- a/lang/qt/src/qgpgmeimportjob.h +++ b/lang/qt/src/qgpgmeimportjob.h @@ -5,6 +5,8 @@ Copyright (c) 2004,2008 Klarälvdalens Datakonsult AB Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik Software engineering by Intevation GmbH + Copyright (c) 2023 g10 Code GmbH + Software engineering by Ingo Klöcker QGpgME is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -70,6 +72,8 @@ public: /* from ImportJob */ GpgME::ImportResult exec(const QByteArray &keyData) Q_DECL_OVERRIDE; + GpgME::Error startLater(const QByteArray &keyData) override; + /* from ThreadedJobMixin */ void resultHook(const result_type &r) Q_DECL_OVERRIDE; -- cgit v1.2.3