2014-11-13 01:04:59 +02:00
|
|
|
/* This file is part of the KDE project
|
|
|
|
Copyright (C) 2006 Kevin Ottens <ervin@kde.org>
|
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Library General Public
|
|
|
|
License version 2 as published by the Free Software Foundation.
|
|
|
|
|
|
|
|
This library 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
|
|
|
|
Library General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
|
|
Boston, MA 02110-1301, USA.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef KCOMPOSITEJOB_H
|
|
|
|
#define KCOMPOSITEJOB_H
|
|
|
|
|
|
|
|
#include <kjob.h>
|
|
|
|
|
|
|
|
class KCompositeJobPrivate;
|
2023-06-30 01:54:59 +03:00
|
|
|
|
2014-11-13 01:04:59 +02:00
|
|
|
/**
|
|
|
|
* The base class for all jobs able to be composed of one
|
|
|
|
* or more subjobs.
|
|
|
|
*/
|
|
|
|
class KDECORE_EXPORT KCompositeJob : public KJob
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* Creates a new KCompositeJob object.
|
|
|
|
*
|
|
|
|
* @param parent the parent QObject
|
|
|
|
*/
|
2023-06-30 01:54:59 +03:00
|
|
|
explicit KCompositeJob(QObject *parent = nullptr);
|
2014-11-13 01:04:59 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Destroys a KCompositeJob object.
|
|
|
|
*/
|
|
|
|
virtual ~KCompositeJob();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
/**
|
|
|
|
* Add a job that has to be finished before a result
|
|
|
|
* is emitted. This has obviously to be called before
|
|
|
|
* the result has been emitted by the job.
|
|
|
|
*
|
|
|
|
* Note that the composite job takes ownership of @p job
|
|
|
|
*
|
|
|
|
* @param job the subjob to add
|
|
|
|
* @return true if the job has been added correctly, false otherwise
|
|
|
|
*/
|
2023-06-30 01:54:59 +03:00
|
|
|
virtual bool addSubjob(KJob *job);
|
2014-11-13 01:04:59 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Mark a sub job as being done.
|
|
|
|
*
|
|
|
|
* The ownership of @p job is passed on to the caller.
|
|
|
|
*
|
|
|
|
* @param job the subjob to remove
|
|
|
|
* @return true if the job has been removed correctly, false otherwise
|
|
|
|
*/
|
2023-06-30 01:54:59 +03:00
|
|
|
virtual bool removeSubjob(KJob *job);
|
2014-11-13 01:04:59 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Checks if this job has subjobs running.
|
|
|
|
*
|
|
|
|
* @return true if we still have subjobs running, false otherwise
|
|
|
|
*/
|
2021-06-16 16:04:07 +03:00
|
|
|
bool hasSubjobs() const;
|
2014-11-13 01:04:59 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieves the list of the subjobs.
|
|
|
|
*
|
|
|
|
* @return the full list of sub jobs
|
|
|
|
*/
|
2023-06-30 01:54:59 +03:00
|
|
|
const QList<KJob*>& subjobs() const;
|
2014-11-13 01:04:59 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Clears the list of subjobs.
|
|
|
|
*
|
|
|
|
* Note that this will *not* delete the subjobs.
|
|
|
|
* Ownership of the subjobs is passed on to the caller.
|
|
|
|
*/
|
|
|
|
void clearSubjobs();
|
|
|
|
|
|
|
|
protected Q_SLOTS:
|
|
|
|
/**
|
|
|
|
* Called whenever a subjob finishes.
|
|
|
|
* Default implementation checks for errors and propagates
|
|
|
|
* to parent job, and in all cases it calls removeSubjob.
|
|
|
|
*
|
|
|
|
* @param job the subjob
|
2023-06-30 01:54:59 +03:00
|
|
|
* @todo make it private
|
2014-11-13 01:04:59 +02:00
|
|
|
*/
|
2023-06-30 01:54:59 +03:00
|
|
|
virtual void slotResult(KJob *job);
|
2014-11-13 01:04:59 +02:00
|
|
|
|
|
|
|
protected:
|
|
|
|
KCompositeJob(KCompositeJobPrivate &dd, QObject *parent);
|
|
|
|
private:
|
|
|
|
Q_DECLARE_PRIVATE(KCompositeJob)
|
|
|
|
};
|
|
|
|
|
2023-06-30 01:54:59 +03:00
|
|
|
#endif // KCOMPOSITEJOB_H
|