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
00186 bool isInteractive() const;
00187
00197 void setParentJob( Job* parentJob );
00198
00204 Job* parentJob() const;
00205
00213 void setMetaData( const KIO::MetaData &metaData);
00214
00222 void addMetaData(const QString &key, const QString &value);
00223
00231 void addMetaData(const QMap<QString,QString> &values);
00232
00240 void mergeMetaData(const QMap<QString,QString> &values);
00241
00245 MetaData outgoingMetaData() const;
00246
00252 MetaData metaData() const;
00253
00261 QString queryMetaData(const QString &key);
00262
00263 protected:
00264
00265 Q_SIGNALS:
00273 void canceled( KJob *job );
00274
00281 void connected( KIO::Job *job );
00282
00283 protected:
00291 virtual bool addSubjob( KJob *job );
00292
00300 virtual bool removeSubjob( KJob *job );
00301
00302 private:
00309 Q_PRIVATE_SLOT(d_func(), void slotSpeed( KJob *job, unsigned long speed ))
00310 Q_DECLARE_PRIVATE(Job)
00311 };
00312
00313 class SimpleJobPrivate;
00320 class KIO_EXPORT SimpleJob : public KIO::Job {
00321 Q_OBJECT
00322
00323 public:
00324 ~SimpleJob();
00325
00326 protected:
00331 virtual bool doSuspend();
00332
00337 virtual bool doResume();
00338
00343 virtual bool doKill();
00344
00345 public:
00350 const KUrl& url() const;
00351
00356 virtual void putOnHold();
00357
00361 static void removeOnHold();
00362
00363 public Q_SLOTS:
00369 void slotError( int , const QString & );
00370
00371 protected Q_SLOTS:
00376 virtual void slotFinished( );
00377
00382 virtual void slotWarning( const QString & );
00383
00389 virtual void slotMetaData( const KIO::MetaData &_metaData);
00390
00391 protected:
00392
00393
00394
00395
00396
00397
00398
00399 void storeSSLSessionFromJob(const KUrl &m_redirectionURL);
00400
00405 SimpleJob(SimpleJobPrivate &dd);
00406 private:
00407 Q_PRIVATE_SLOT(d_func(), void slotConnected())
00408 Q_PRIVATE_SLOT(d_func(), void slotProcessedSize( KIO::filesize_t data_size ))
00409 Q_PRIVATE_SLOT(d_func(), void slotSpeed( unsigned long speed ))
00410 Q_PRIVATE_SLOT(d_func(), void slotTotalSize( KIO::filesize_t data_size ))
00411 Q_PRIVATE_SLOT(d_func(), void _k_slotSlaveInfoMessage(const QString&))
00412
00413 Q_DECLARE_PRIVATE(SimpleJob)
00414 };
00415
00416 class StatJobPrivate;
00421 class KIO_EXPORT StatJob : public SimpleJob {
00422
00423 Q_OBJECT
00424
00425 public:
00426 enum StatSide {
00427 SourceSide,
00428 DestinationSide
00429 };
00430
00431 ~StatJob();
00432
00440 void setSide(StatSide side);
00441
00449 KDE_DEPRECATED void setSide( bool source );
00450
00460 void setDetails( short int details );
00461
00467 const UDSEntry & statResult() const;
00468
00469 Q_SIGNALS:
00477 void redirection( KIO::Job *job, const KUrl &url );
00478
00486 void permanentRedirection( KIO::Job *job, const KUrl &fromUrl, const KUrl &toUrl );
00487
00488 protected Q_SLOTS:
00489 virtual void slotFinished();
00490 virtual void slotMetaData( const KIO::MetaData &_metaData);
00491 protected:
00492 StatJob(StatJobPrivate &dd);
00493
00494 private:
00495 Q_PRIVATE_SLOT(d_func(), void slotStatEntry( const KIO::UDSEntry & entry ))
00496 Q_PRIVATE_SLOT(d_func(), void slotRedirection( const KUrl &url))
00497 Q_DECLARE_PRIVATE(StatJob)
00498 };
00499
00500 class FileCopyJobPrivate;
00501 class TransferJobPrivate;
00508 class KIO_EXPORT TransferJob : public SimpleJob {
00509 Q_OBJECT
00510
00511 public:
00512 ~TransferJob();
00513
00518 void setModificationTime( const QDateTime& mtime );
00519
00527 bool isErrorPage() const;
00528
00535 void setAsyncDataEnabled(bool enabled);
00536
00542 void sendAsyncData(const QByteArray &data);
00543
00550 void setReportDataSent(bool enabled);
00551
00557 bool reportDataSent() const;
00558
00564 QString mimetype() const;
00565
00566 protected:
00571 virtual void slotResult( KJob *job );
00572
00576 virtual bool doResume();
00577
00578 Q_SIGNALS:
00588 void data( KIO::Job *job, const QByteArray &data );
00589
00601 void dataReq( KIO::Job *job, QByteArray &data );
00602
00610 void redirection( KIO::Job *job, const KUrl &url );
00611
00619 void permanentRedirection( KIO::Job *job, const KUrl &fromUrl, const KUrl &toUrl );
00620
00626 void mimetype( KIO::Job *job, const QString &type );
00627
00635 void canResume( KIO::Job *job, KIO::filesize_t offset );
00636
00637
00638 protected Q_SLOTS:
00639 virtual void slotRedirection( const KUrl &url);
00640 virtual void slotFinished();
00641 virtual void slotData( const QByteArray &data);
00642 virtual void slotDataReq();
00643 virtual void slotMimetype( const QString &mimetype );
00644 virtual void slotMetaData( const KIO::MetaData &_metaData);
00645
00646 protected:
00647 TransferJob(TransferJobPrivate &dd);
00648 private:
00649 Q_PRIVATE_SLOT(d_func(), void slotErrorPage())
00650 Q_PRIVATE_SLOT(d_func(), void slotCanResume( KIO::filesize_t offset ))
00651 Q_PRIVATE_SLOT(d_func(), void slotPostRedirection())
00652 Q_PRIVATE_SLOT(d_func(), void slotNeedSubUrlData())
00653 Q_PRIVATE_SLOT(d_func(), void slotSubUrlData(KIO::Job*, const QByteArray &))
00654 Q_DECLARE_PRIVATE(TransferJob)
00655
00656
00657 friend class FileCopyJob;
00658 friend class FileCopyJobPrivate;
00659 };
00660
00661 class StoredTransferJobPrivate;
00680 class KIO_EXPORT StoredTransferJob : public KIO::TransferJob {
00681 Q_OBJECT
00682
00683 public:
00684 ~StoredTransferJob();
00685
00691 void setData( const QByteArray& arr );
00692
00697 QByteArray data() const;
00698
00699 protected:
00700 StoredTransferJob(StoredTransferJobPrivate &dd);
00701 private:
00702 Q_PRIVATE_SLOT(d_func(), void slotStoredData( KIO::Job *job, const QByteArray &data ))
00703 Q_PRIVATE_SLOT(d_func(), void slotStoredDataReq( KIO::Job *job, QByteArray &data ))
00704
00705 Q_DECLARE_PRIVATE(StoredTransferJob)
00706 };
00707
00708 class MultiGetJobPrivate;
00715 class KIO_EXPORT MultiGetJob : public TransferJob {
00716 Q_OBJECT
00717
00718 public:
00719 virtual ~MultiGetJob();
00720
00728 void get(long id, const KUrl &url, const MetaData &metaData);
00729
00730 Q_SIGNALS:
00737 void data( long id, const QByteArray &data);
00738
00744 void mimetype( long id, const QString &type );
00745
00753 void result( long id);
00754
00755 protected Q_SLOTS:
00756 virtual void slotRedirection( const KUrl &url);
00757 virtual void slotFinished();
00758 virtual void slotData( const QByteArray &data);
00759 virtual void slotMimetype( const QString &mimetype );
00760
00761 protected:
00762 MultiGetJob(MultiGetJobPrivate &dd);
00763 private:
00764 Q_DECLARE_PRIVATE(MultiGetJob)
00765 };
00766
00767 class MimetypeJobPrivate;
00774 class KIO_EXPORT MimetypeJob : public TransferJob {
00775 Q_OBJECT
00776
00777 public:
00778 ~MimetypeJob();
00779
00780 protected Q_SLOTS:
00781 virtual void slotFinished( );
00782 protected:
00783 MimetypeJob(MimetypeJobPrivate &dd);
00784 private:
00785 Q_DECLARE_PRIVATE(MimetypeJob)
00786 };
00787
00793 class KIO_EXPORT FileCopyJob : public Job {
00794 Q_OBJECT
00795
00796 public:
00797 ~FileCopyJob();
00803 void setSourceSize(KIO::filesize_t size);
00804
00812 void setModificationTime( const QDateTime& mtime );
00813
00818 KUrl srcUrl() const;
00819
00824 KUrl destUrl() const;
00825
00826 bool doSuspend();
00827 bool doResume();
00828
00829 Q_SIGNALS:
00840 void mimetype( KIO::Job *job, const QString &type );
00841
00842 protected Q_SLOTS:
00847 virtual void slotResult( KJob *job );
00848
00849 protected:
00850 FileCopyJob(FileCopyJobPrivate &dd);
00851
00852 private:
00853 Q_PRIVATE_SLOT(d_func(), void slotStart())
00854 Q_PRIVATE_SLOT(d_func(), void slotData( KIO::Job *, const QByteArray &data))
00855 Q_PRIVATE_SLOT(d_func(), void slotDataReq( KIO::Job *, QByteArray &data))
00856 Q_PRIVATE_SLOT(d_func(), void slotMimetype( KIO::Job*, const QString& type ))
00857 Q_PRIVATE_SLOT(d_func(), void slotProcessedSize( KJob *job, qulonglong size ))
00858 Q_PRIVATE_SLOT(d_func(), void slotTotalSize( KJob *job, qulonglong size ))
00859 Q_PRIVATE_SLOT(d_func(), void slotPercent( KJob *job, unsigned long pct ))
00860 Q_PRIVATE_SLOT(d_func(), void slotCanResume( KIO::Job *job, KIO::filesize_t offset ))
00861
00862 Q_DECLARE_PRIVATE(FileCopyJob)
00863 };
00864
00865 class ListJobPrivate;
00873 class KIO_EXPORT ListJob : public SimpleJob {
00874 Q_OBJECT
00875
00876 public:
00877 ~ListJob();
00878
00884 const KUrl& redirectionUrl() const;
00885
00889 void setUnrestricted(bool unrestricted);
00890
00891 Q_SIGNALS:
00901 void entries( KIO::Job *job, const KIO::UDSEntryList& list);
00902
00910 void redirection( KIO::Job *job, const KUrl &url );
00911
00919 void permanentRedirection( KIO::Job *job, const KUrl &fromUrl, const KUrl &toUrl );
00920
00921 protected Q_SLOTS:
00922 virtual void slotFinished( );
00923 virtual void slotMetaData( const KIO::MetaData &_metaData);
00924 virtual void slotResult( KJob *job );
00925
00926 protected:
00927 ListJob(ListJobPrivate &dd);
00928
00929 private:
00930 Q_PRIVATE_SLOT(d_func(), void slotListEntries( const KIO::UDSEntryList& list ))
00931 Q_PRIVATE_SLOT(d_func(), void slotRedirection( const KUrl &url ))
00932 Q_PRIVATE_SLOT(d_func(), void gotEntries( KIO::Job * subjob, const KIO::UDSEntryList& list ))
00933 Q_DECLARE_PRIVATE(ListJob)
00934 };
00935
00936 class SpecialJobPrivate;
00948 class KIO_EXPORT SpecialJob : public TransferJob
00949 {
00950 Q_OBJECT
00951 public:
00958 explicit SpecialJob(const KUrl &url, const QByteArray &data = QByteArray());
00959
00964 void setArguments(const QByteArray &data);
00965
00970 QByteArray arguments() const;
00971
00972 public:
00973 ~SpecialJob();
00974
00975 private:
00976 Q_DECLARE_PRIVATE(SpecialJob)
00977 };
00978 }
00979
00980 #endif