00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KIO_JOBCLASSES_H
00023 #define KIO_JOBCLASSES_H
00024
00025 #include <QtCore/QObject>
00026 #include <QtCore/QLinkedList>
00027 #include <QtCore/QStringList>
00028
00029 #include <kurl.h>
00030 #include <kio/global.h>
00031 #include <kio/udsentry.h>
00032
00033 #include <kcompositejob.h>
00034
00035
00036 namespace KIO {
00037
00043 enum JobFlag {
00047 DefaultFlags = 0,
00048
00052 HideProgressInfo = 1,
00053
00061 Resume = 2,
00062
00068 Overwrite = 4
00069 };
00070 Q_DECLARE_FLAGS(JobFlags, JobFlag)
00071 Q_DECLARE_OPERATORS_FOR_FLAGS(JobFlags)
00072
00073 class JobUiDelegate;
00074
00075 class JobPrivate;
00095 class KIO_EXPORT Job : public KCompositeJob {
00096 Q_OBJECT
00097
00098 protected:
00099 Job();
00100 Job(JobPrivate &dd);
00101
00102 public:
00103 virtual ~Job();
00104 void start() {}
00105
00113 JobUiDelegate *ui() const;
00114
00115 protected:
00121 virtual bool doKill();
00122
00127 virtual bool doSuspend();
00128
00133 virtual bool doResume();
00134
00135 public:
00153 QString errorString() const;
00154
00165 QStringList detailedErrorStrings(const KUrl *reqUrl = 0L,
00166 int method = -1) const;
00167
00178 KDE_DEPRECATED void showErrorDialog( QWidget *parent = 0 );
00179
00187 bool isInteractive() const;
00188
00198 void setParentJob( Job* parentJob );
00199
00205 Job* parentJob() const;
00206
00214 void setMetaData( const KIO::MetaData &metaData);
00215
00223 void addMetaData(const QString &key, const QString &value);
00224
00232 void addMetaData(const QMap<QString,QString> &values);
00233
00241 void mergeMetaData(const QMap<QString,QString> &values);
00242
00246 MetaData outgoingMetaData() const;
00247
00253 MetaData metaData() const;
00254
00262 QString queryMetaData(const QString &key);
00263
00264 protected:
00265
00266 Q_SIGNALS:
00274 void canceled( KJob *job );
00275
00282 void connected( KIO::Job *job );
00283
00284 protected:
00292 virtual bool addSubjob( KJob *job );
00293
00301 virtual bool removeSubjob( KJob *job );
00302
00303 private:
00310 Q_PRIVATE_SLOT(d_func(), void slotSpeed( KJob *job, unsigned long speed ))
00311 Q_DECLARE_PRIVATE(Job)
00312 };
00313
00314 class SimpleJobPrivate;
00321 class KIO_EXPORT SimpleJob : public KIO::Job {
00322 Q_OBJECT
00323
00324 public:
00325 ~SimpleJob();
00326
00327 protected:
00332 virtual bool doSuspend();
00333
00338 virtual bool doResume();
00339
00344 virtual bool doKill();
00345
00346 public:
00351 const KUrl& url() const;
00352
00357 virtual void putOnHold();
00358
00362 static void removeOnHold();
00363
00364 public Q_SLOTS:
00370 void slotError( int , const QString & );
00371
00372 protected Q_SLOTS:
00377 virtual void slotFinished( );
00378
00383 virtual void slotWarning( const QString & );
00384
00390 virtual void slotMetaData( const KIO::MetaData &_metaData);
00391
00392 protected:
00393
00394
00395
00396
00397
00398
00399
00400 void storeSSLSessionFromJob(const KUrl &m_redirectionURL);
00401
00406 SimpleJob(SimpleJobPrivate &dd);
00407 private:
00408 Q_PRIVATE_SLOT(d_func(), void slotConnected())
00409 Q_PRIVATE_SLOT(d_func(), void slotProcessedSize( KIO::filesize_t data_size ))
00410 Q_PRIVATE_SLOT(d_func(), void slotSpeed( unsigned long speed ))
00411 Q_PRIVATE_SLOT(d_func(), void slotTotalSize( KIO::filesize_t data_size ))
00412 Q_PRIVATE_SLOT(d_func(), void _k_slotSlaveInfoMessage(const QString&))
00413
00414 Q_DECLARE_PRIVATE(SimpleJob)
00415 };
00416
00417 class StatJobPrivate;
00422 class KIO_EXPORT StatJob : public SimpleJob {
00423
00424 Q_OBJECT
00425
00426 public:
00427 enum StatSide {
00428 SourceSide,
00429 DestinationSide
00430 };
00431
00432 ~StatJob();
00433
00441 void setSide(StatSide side);
00442
00450 KDE_DEPRECATED void setSide( bool source );
00451
00461 void setDetails( short int details );
00462
00468 const UDSEntry & statResult() const;
00469
00470 Q_SIGNALS:
00478 void redirection( KIO::Job *job, const KUrl &url );
00479
00487 void permanentRedirection( KIO::Job *job, const KUrl &fromUrl, const KUrl &toUrl );
00488
00489 protected Q_SLOTS:
00490 virtual void slotFinished();
00491 virtual void slotMetaData( const KIO::MetaData &_metaData);
00492 protected:
00493 StatJob(StatJobPrivate &dd);
00494
00495 private:
00496 Q_PRIVATE_SLOT(d_func(), void slotStatEntry( const KIO::UDSEntry & entry ))
00497 Q_PRIVATE_SLOT(d_func(), void slotRedirection( const KUrl &url))
00498 Q_DECLARE_PRIVATE(StatJob)
00499 };
00500
00501 class FileCopyJobPrivate;
00502 class TransferJobPrivate;
00509 class KIO_EXPORT TransferJob : public SimpleJob {
00510 Q_OBJECT
00511
00512 public:
00513 ~TransferJob();
00514
00519 void setModificationTime( const QDateTime& mtime );
00520
00528 bool isErrorPage() const;
00529
00536 void setAsyncDataEnabled(bool enabled);
00537
00543 void sendAsyncData(const QByteArray &data);
00544
00553 KDE_DEPRECATED void setReportDataSent(bool enabled);
00554
00562 KDE_DEPRECATED bool reportDataSent() const;
00563
00569 QString mimetype() const;
00570
00576 void setTotalSize(KIO::filesize_t bytes);
00577
00578 protected:
00583 virtual void slotResult( KJob *job );
00584
00588 virtual bool doResume();
00589
00590 Q_SIGNALS:
00600 void data( KIO::Job *job, const QByteArray &data );
00601
00613 void dataReq( KIO::Job *job, QByteArray &data );
00614
00622 void redirection( KIO::Job *job, const KUrl &url );
00623
00631 void permanentRedirection( KIO::Job *job, const KUrl &fromUrl, const KUrl &toUrl );
00632
00638 void mimetype( KIO::Job *job, const QString &type );
00639
00647 void canResume( KIO::Job *job, KIO::filesize_t offset );
00648
00649
00650 protected Q_SLOTS:
00651 virtual void slotRedirection( const KUrl &url);
00652 virtual void slotFinished();
00653 virtual void slotData( const QByteArray &data);
00654 virtual void slotDataReq();
00655 virtual void slotMimetype( const QString &mimetype );
00656 virtual void slotMetaData( const KIO::MetaData &_metaData);
00657
00658 protected:
00659 TransferJob(TransferJobPrivate &dd);
00660 private:
00661 Q_PRIVATE_SLOT(d_func(), void slotErrorPage())
00662 Q_PRIVATE_SLOT(d_func(), void slotCanResume( KIO::filesize_t offset ))
00663 Q_PRIVATE_SLOT(d_func(), void slotPostRedirection())
00664 Q_PRIVATE_SLOT(d_func(), void slotNeedSubUrlData())
00665 Q_PRIVATE_SLOT(d_func(), void slotSubUrlData(KIO::Job*, const QByteArray &))
00666 Q_DECLARE_PRIVATE(TransferJob)
00667
00668
00669 friend class FileCopyJob;
00670 friend class FileCopyJobPrivate;
00671 };
00672
00673 class StoredTransferJobPrivate;
00692 class KIO_EXPORT StoredTransferJob : public KIO::TransferJob {
00693 Q_OBJECT
00694
00695 public:
00696 ~StoredTransferJob();
00697
00703 void setData( const QByteArray& arr );
00704
00709 QByteArray data() const;
00710
00711 protected:
00712 StoredTransferJob(StoredTransferJobPrivate &dd);
00713 private:
00714 Q_PRIVATE_SLOT(d_func(), void slotStoredData( KIO::Job *job, const QByteArray &data ))
00715 Q_PRIVATE_SLOT(d_func(), void slotStoredDataReq( KIO::Job *job, QByteArray &data ))
00716
00717 Q_DECLARE_PRIVATE(StoredTransferJob)
00718 };
00719
00720 class MultiGetJobPrivate;
00727 class KIO_EXPORT MultiGetJob : public TransferJob {
00728 Q_OBJECT
00729
00730 public:
00731 virtual ~MultiGetJob();
00732
00740 void get(long id, const KUrl &url, const MetaData &metaData);
00741
00742 Q_SIGNALS:
00749 void data( long id, const QByteArray &data);
00750
00756 void mimetype( long id, const QString &type );
00757
00765 void result( long id);
00766
00767 protected Q_SLOTS:
00768 virtual void slotRedirection( const KUrl &url);
00769 virtual void slotFinished();
00770 virtual void slotData( const QByteArray &data);
00771 virtual void slotMimetype( const QString &mimetype );
00772
00773 protected:
00774 MultiGetJob(MultiGetJobPrivate &dd);
00775 private:
00776 Q_DECLARE_PRIVATE(MultiGetJob)
00777 };
00778
00779 class MimetypeJobPrivate;
00786 class KIO_EXPORT MimetypeJob : public TransferJob {
00787 Q_OBJECT
00788
00789 public:
00790 ~MimetypeJob();
00791
00792 protected Q_SLOTS:
00793 virtual void slotFinished( );
00794 protected:
00795 MimetypeJob(MimetypeJobPrivate &dd);
00796 private:
00797 Q_DECLARE_PRIVATE(MimetypeJob)
00798 };
00799
00805 class KIO_EXPORT FileCopyJob : public Job {
00806 Q_OBJECT
00807
00808 public:
00809 ~FileCopyJob();
00815 void setSourceSize(KIO::filesize_t size);
00816
00824 void setModificationTime( const QDateTime& mtime );
00825
00830 KUrl srcUrl() const;
00831
00836 KUrl destUrl() const;
00837
00838 bool doSuspend();
00839 bool doResume();
00840
00841 Q_SIGNALS:
00852 void mimetype( KIO::Job *job, const QString &type );
00853
00854 protected Q_SLOTS:
00859 virtual void slotResult( KJob *job );
00860
00861 protected:
00862 FileCopyJob(FileCopyJobPrivate &dd);
00863
00864 private:
00865 Q_PRIVATE_SLOT(d_func(), void slotStart())
00866 Q_PRIVATE_SLOT(d_func(), void slotData( KIO::Job *, const QByteArray &data))
00867 Q_PRIVATE_SLOT(d_func(), void slotDataReq( KIO::Job *, QByteArray &data))
00868 Q_PRIVATE_SLOT(d_func(), void slotMimetype( KIO::Job*, const QString& type ))
00869 Q_PRIVATE_SLOT(d_func(), void slotProcessedSize( KJob *job, qulonglong size ))
00870 Q_PRIVATE_SLOT(d_func(), void slotTotalSize( KJob *job, qulonglong size ))
00871 Q_PRIVATE_SLOT(d_func(), void slotPercent( KJob *job, unsigned long pct ))
00872 Q_PRIVATE_SLOT(d_func(), void slotCanResume( KIO::Job *job, KIO::filesize_t offset ))
00873
00874 Q_DECLARE_PRIVATE(FileCopyJob)
00875 };
00876
00877 class ListJobPrivate;
00885 class KIO_EXPORT ListJob : public SimpleJob {
00886 Q_OBJECT
00887
00888 public:
00889 ~ListJob();
00890
00896 const KUrl& redirectionUrl() const;
00897
00901 void setUnrestricted(bool unrestricted);
00902
00903 Q_SIGNALS:
00913 void entries( KIO::Job *job, const KIO::UDSEntryList& list);
00914
00923 void subError( KIO::ListJob *job, KIO::ListJob *subJob );
00924
00932 void redirection( KIO::Job *job, const KUrl &url );
00933
00941 void permanentRedirection( KIO::Job *job, const KUrl &fromUrl, const KUrl &toUrl );
00942
00943 protected Q_SLOTS:
00944 virtual void slotFinished( );
00945 virtual void slotMetaData( const KIO::MetaData &_metaData);
00946 virtual void slotResult( KJob *job );
00947
00948 protected:
00949 ListJob(ListJobPrivate &dd);
00950
00951 private:
00952 Q_PRIVATE_SLOT(d_func(), void slotListEntries( const KIO::UDSEntryList& list ))
00953 Q_PRIVATE_SLOT(d_func(), void slotRedirection( const KUrl &url ))
00954 Q_PRIVATE_SLOT(d_func(), void gotEntries( KIO::Job * subjob, const KIO::UDSEntryList& list ))
00955 Q_DECLARE_PRIVATE(ListJob)
00956 };
00957
00958 class SpecialJobPrivate;
00970 class KIO_EXPORT SpecialJob : public TransferJob
00971 {
00972 Q_OBJECT
00973 public:
00980 explicit SpecialJob(const KUrl &url, const QByteArray &data = QByteArray());
00981
00986 void setArguments(const QByteArray &data);
00987
00992 QByteArray arguments() const;
00993
00994 public:
00995 ~SpecialJob();
00996
00997 private:
00998 Q_DECLARE_PRIVATE(SpecialJob)
00999 };
01000 }
01001
01002 #endif