KDECore
kcompositejob.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "kcompositejob.h"
00021 #include "kcompositejob_p.h"
00022
00023 KCompositeJobPrivate::KCompositeJobPrivate()
00024 {
00025 }
00026
00027 KCompositeJobPrivate::~KCompositeJobPrivate()
00028 {
00029 qDeleteAll(subjobs);
00030 }
00031
00032 KCompositeJob::KCompositeJob( QObject *parent )
00033 : KJob( *new KCompositeJobPrivate, parent )
00034 {
00035 }
00036
00037 KCompositeJob::KCompositeJob( KCompositeJobPrivate &dd, QObject *parent )
00038 : KJob( dd, parent)
00039 {
00040 }
00041
00042 KCompositeJob::~KCompositeJob()
00043 {
00044 }
00045
00046 bool KCompositeJob::addSubjob( KJob *job )
00047 {
00048 Q_D(KCompositeJob);
00049 if ( job == 0 || d->subjobs.contains( job ) )
00050 {
00051 return false;
00052 }
00053
00054 d->subjobs.append(job);
00055
00056 connect( job, SIGNAL( result( KJob* ) ),
00057 SLOT( slotResult( KJob* ) ) );
00058
00059
00060 connect( job, SIGNAL(infoMessage( KJob*, const QString &, const QString & )),
00061 SLOT(slotInfoMessage( KJob*, const QString &, const QString & ) ) );
00062
00063 return true;
00064 }
00065
00066 bool KCompositeJob::removeSubjob( KJob *job )
00067 {
00068 Q_D(KCompositeJob);
00069 if ( job == 0 )
00070 {
00071 return false;
00072 }
00073
00074 d->subjobs.removeAll( job );
00075
00076 return true;
00077 }
00078
00079 bool KCompositeJob::hasSubjobs()
00080 {
00081 return !d_func()->subjobs.isEmpty();
00082 }
00083
00084 const QList<KJob*> &KCompositeJob::subjobs() const
00085 {
00086 return d_func()->subjobs;
00087 }
00088
00089 void KCompositeJob::clearSubjobs()
00090 {
00091 Q_D(KCompositeJob);
00092 d->subjobs.clear();
00093 }
00094
00095 void KCompositeJob::slotResult( KJob *job )
00096 {
00097
00098 if ( job->error() && !error() )
00099 {
00100
00101 setError( job->error() );
00102 setErrorText( job->errorText() );
00103 emitResult();
00104 }
00105
00106 removeSubjob(job);
00107 }
00108
00109 void KCompositeJob::slotInfoMessage( KJob *job, const QString &plain, const QString &rich )
00110 {
00111 emit infoMessage( job, plain, rich );
00112 }
00113
00114 #include "kcompositejob.moc"