File indexing completed on 2024-06-16 04:56:00

0001 /* -*- mode: c++; c-basic-offset:4 -*-
0002     crypto/taskcollection.h
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 #pragma once
0011 
0012 #include <QObject>
0013 
0014 #include <crypto/task.h>
0015 
0016 #include <utils/pimpl_ptr.h>
0017 
0018 #include <memory>
0019 
0020 #include <vector>
0021 
0022 namespace Kleo
0023 {
0024 namespace Crypto
0025 {
0026 
0027 class TaskCollection : public QObject
0028 {
0029     Q_OBJECT
0030 public:
0031     explicit TaskCollection(QObject *parent = nullptr);
0032     ~TaskCollection() override;
0033 
0034     std::vector<std::shared_ptr<Task>> tasks() const;
0035     std::shared_ptr<Task> taskById(int id) const;
0036 
0037     void setTasks(const std::vector<std::shared_ptr<Task>> &tasks);
0038 
0039     bool isEmpty() const;
0040     size_t size() const;
0041 
0042     int numberOfCompletedTasks() const;
0043     bool allTasksCompleted() const;
0044     bool errorOccurred() const;
0045     bool allTasksHaveErrors() const;
0046 
0047 Q_SIGNALS:
0048     void progress(int processed, int total);
0049     void result(const std::shared_ptr<const Kleo::Crypto::Task::Result> &result);
0050     void started(const std::shared_ptr<Kleo::Crypto::Task> &task);
0051     void done();
0052 
0053 private:
0054     class Private;
0055     kdtools::pimpl_ptr<Private> d;
0056     Q_PRIVATE_SLOT(d, void taskResult(std::shared_ptr<const Kleo::Crypto::Task::Result>))
0057     Q_PRIVATE_SLOT(d, void taskStarted())
0058 };
0059 }
0060 }