File indexing completed on 2024-06-16 04:55:55
0001 /* -*- mode: c++; c-basic-offset:4 -*- 0002 crypto/controller.cpp 0003 0004 This file is part of Kleopatra, the KDE keymanager 0005 SPDX-FileCopyrightText: 2008 Klarälvdalens Datakonsult AB 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #include <config-kleopatra.h> 0011 0012 #include "controller.h" 0013 0014 using namespace Kleo; 0015 using namespace Kleo::Crypto; 0016 0017 class Controller::Private 0018 { 0019 friend class ::Kleo::Crypto::Controller; 0020 Controller *const q; 0021 0022 public: 0023 explicit Private(Controller *qq) 0024 : q(qq) 0025 { 0026 } 0027 0028 private: 0029 int lastError = 0; 0030 QString lastErrorString; 0031 }; 0032 0033 Controller::Controller(QObject *parent) 0034 : QObject(parent) 0035 , ExecutionContextUser() 0036 , d(new Private(this)) 0037 { 0038 } 0039 0040 Controller::Controller(const std::shared_ptr<const ExecutionContext> &ctx, QObject *parent) 0041 : QObject(parent) 0042 , ExecutionContextUser(ctx) 0043 , d(new Private(this)) 0044 { 0045 } 0046 0047 Controller::~Controller() 0048 { 0049 } 0050 0051 void Controller::taskDone(const std::shared_ptr<const Task::Result> &result) 0052 { 0053 const Task *task = qobject_cast<const Task *>(sender()); 0054 Q_ASSERT(task); 0055 doTaskDone(task, result); 0056 } 0057 0058 void Controller::doTaskDone(const Task *, const std::shared_ptr<const Task::Result> &) 0059 { 0060 } 0061 0062 void Controller::connectTask(const std::shared_ptr<Task> &task) 0063 { 0064 Q_ASSERT(task); 0065 connect(task.get(), &Task::result, this, &Controller::taskDone); 0066 } 0067 0068 void Controller::setLastError(int err, const QString &msg) 0069 { 0070 d->lastError = err; 0071 d->lastErrorString = msg; 0072 } 0073 0074 void Controller::emitDoneOrError() 0075 { 0076 if (d->lastError) { 0077 Q_EMIT error(d->lastError, d->lastErrorString, QPrivateSignal{}); 0078 d->lastError = 0; 0079 d->lastErrorString = QString(); 0080 } else { 0081 Q_EMIT done(QPrivateSignal{}); 0082 } 0083 } 0084 0085 #include "moc_controller.cpp"