File indexing completed on 2024-04-21 05:50:43

0001 /*
0002     SPDX-FileCopyrightText: 2009, 2010, 2012, 2014 Rolf Eike Beer <kde@opensource.sf-tec.de>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "kgpgtransactionjob.h"
0007 
0008 #include "kgpgtransaction.h"
0009 
0010 #include <KLocalizedString>
0011 
0012 KGpgTransactionJob::KGpgTransactionJob(KGpgTransaction *transaction)
0013     : KJob(transaction->parent()),
0014     m_transaction(transaction),
0015     m_result(-1),
0016     m_wasKilled(false)
0017 {
0018 }
0019 
0020 KGpgTransactionJob::~KGpgTransactionJob()
0021 {
0022     delete m_transaction;
0023 }
0024 
0025 void
0026 KGpgTransactionJob::start()
0027 {
0028     connect(m_transaction, &KGpgTransaction::done, this, &KGpgTransactionJob::slotTransactionDone);
0029     connect(m_transaction, &KGpgTransaction::statusMessage, this, &KGpgTransactionJob::slotStatusMessage);
0030     connect(m_transaction, &KGpgTransaction::infoProgress, this, &KGpgTransactionJob::slotInfoProgress);
0031 
0032     slotStatusMessage(i18nc("Job is started up", "Startup"));
0033     m_transaction->start();
0034 }
0035 
0036 const KGpgTransaction *
0037 KGpgTransactionJob::getTransaction() const
0038 {
0039     return m_transaction;
0040 }
0041 
0042 int
0043 KGpgTransactionJob::getResultCode() const
0044 {
0045     return m_result;
0046 }
0047 
0048 void
0049 KGpgTransactionJob::slotTransactionDone(int result)
0050 {
0051     m_result = result;
0052     if (!m_wasKilled)
0053         emitResult();
0054 }
0055 
0056 void
0057 KGpgTransactionJob::slotStatusMessage(const QString &msg)
0058 {
0059     Q_EMIT description(this, m_transaction->getDescription(), qMakePair(i18nc("State of operation as in status", "State"), msg));
0060 }
0061 
0062 void
0063 KGpgTransactionJob::slotInfoProgress(qulonglong processedAmount, qulonglong totalAmount)
0064 {
0065     emitPercent(processedAmount, totalAmount);
0066 }
0067 
0068 bool
0069 KGpgTransactionJob::doKill()
0070 {
0071     m_transaction->kill();
0072     m_wasKilled = true;
0073 
0074     return true;
0075 }