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
00469 const UDSEntry & statResult() const;
00470
00494 KUrl mostLocalUrl() const;
00495
00496 Q_SIGNALS:
00504 void redirection( KIO::Job *job, const KUrl &url );
00505
00513 void permanentRedirection( KIO::Job *job, const KUrl &fromUrl, const KUrl &toUrl );
00514
00515 protected Q_SLOTS:
00516 virtual void slotFinished();
00517 virtual void slotMetaData( const KIO::MetaData &_metaData);
00518 protected:
00519 StatJob(StatJobPrivate &dd);
00520
00521 private:
00522 Q_PRIVATE_SLOT(d_func(), void slotStatEntry( const KIO::UDSEntry & entry ))
00523 Q_PRIVATE_SLOT(d_func(), void slotRedirection( const KUrl &url))
00524 Q_DECLARE_PRIVATE(StatJob)
00525 };
00526
00527 class FileCopyJobPrivate;
00528 class TransferJobPrivate;
00535 class KIO_EXPORT TransferJob : public SimpleJob {
00536 Q_OBJECT
00537
00538 public:
00539 ~TransferJob();
00540
00545 void setModificationTime( const QDateTime& mtime );
00546
00554 bool isErrorPage() const;
00555
00562 void setAsyncDataEnabled(bool enabled);
00563
00569 void sendAsyncData(const QByteArray &data);
00570
00579 KDE_DEPRECATED void setReportDataSent(bool enabled);
00580
00588 KDE_DEPRECATED bool reportDataSent() const;
00589
00595 QString mimetype() const;
00596
00602 void setTotalSize(KIO::filesize_t bytes);
00603
00604 protected:
00609 virtual void slotResult( KJob *job );
00610
00614 virtual bool doResume();
00615
00616 Q_SIGNALS:
00626 void data( KIO::Job *job, const QByteArray &data );
00627
00639 void dataReq( KIO::Job *job, QByteArray &data );
00640
00648 void redirection( KIO::Job *job, const KUrl &url );
00649
00657 void permanentRedirection( KIO::Job *job, const KUrl &fromUrl, const KUrl &toUrl );
00658
00664 void mimetype( KIO::Job *job, const QString &type );
00665
00673 void canResume( KIO::Job *job, KIO::filesize_t offset );
00674
00675
00676 protected Q_SLOTS:
00677 virtual void slotRedirection( const KUrl &url);
00678 virtual void slotFinished();
00679 virtual void slotData( const QByteArray &data);
00680 virtual void slotDataReq();
00681 virtual void slotMimetype( const QString &mimetype );
00682 virtual void slotMetaData( const KIO::MetaData &_metaData);
00683
00684 protected:
00685 TransferJob(TransferJobPrivate &dd);
00686 private:
00687 Q_PRIVATE_SLOT(d_func(), void slotErrorPage())
00688 Q_PRIVATE_SLOT(d_func(), void slotCanResume( KIO::filesize_t offset ))
00689 Q_PRIVATE_SLOT(d_func(), void slotPostRedirection())
00690 Q_PRIVATE_SLOT(d_func(), void slotNeedSubUrlData())
00691 Q_PRIVATE_SLOT(d_func(), void slotSubUrlData(KIO::Job*, const QByteArray &))
00692 Q_DECLARE_PRIVATE(TransferJob)
00693
00694
00695 friend class FileCopyJob;
00696 friend class FileCopyJobPrivate;
00697 };
00698
00699 class StoredTransferJobPrivate;
00718 class KIO_EXPORT StoredTransferJob : public KIO::TransferJob {
00719 Q_OBJECT
00720
00721 public:
00722 ~StoredTransferJob();
00723
00729 void setData( const QByteArray& arr );
00730
00735 QByteArray data() const;
00736
00737 protected:
00738 StoredTransferJob(StoredTransferJobPrivate &dd);
00739 private:
00740 Q_PRIVATE_SLOT(d_func(), void slotStoredData( KIO::Job *job, const QByteArray &data ))
00741 Q_PRIVATE_SLOT(d_func(), void slotStoredDataReq( KIO::Job *job, QByteArray &data ))
00742
00743 Q_DECLARE_PRIVATE(StoredTransferJob)
00744 };
00745
00746 class MultiGetJobPrivate;
00753 class KIO_EXPORT MultiGetJob : public TransferJob {
00754 Q_OBJECT
00755
00756 public:
00757 virtual ~MultiGetJob();
00758
00766 void get(long id, const KUrl &url, const MetaData &metaData);
00767
00768 Q_SIGNALS:
00775 void data( long id, const QByteArray &data);
00776
00782 void mimetype( long id, const QString &type );
00783
00791 void result( long id);
00792
00793 protected Q_SLOTS:
00794 virtual void slotRedirection( const KUrl &url);
00795 virtual void slotFinished();
00796 virtual void slotData( const QByteArray &data);
00797 virtual void slotMimetype( const QString &mimetype );
00798
00799 protected:
00800 MultiGetJob(MultiGetJobPrivate &dd);
00801 private:
00802 Q_DECLARE_PRIVATE(MultiGetJob)
00803 };
00804
00805 class MimetypeJobPrivate;
00812 class KIO_EXPORT MimetypeJob : public TransferJob {
00813 Q_OBJECT
00814
00815 public:
00816 ~MimetypeJob();
00817
00818 protected Q_SLOTS:
00819 virtual void slotFinished( );
00820 protected:
00821 MimetypeJob(MimetypeJobPrivate &dd);
00822 private:
00823 Q_DECLARE_PRIVATE(MimetypeJob)
00824 };
00825
00831 class KIO_EXPORT FileCopyJob : public Job {
00832 Q_OBJECT
00833
00834 public:
00835 ~FileCopyJob();
00841 void setSourceSize(KIO::filesize_t size);
00842
00850 void setModificationTime( const QDateTime& mtime );
00851
00856 KUrl srcUrl() const;
00857
00862 KUrl destUrl() const;
00863
00864 bool doSuspend();
00865 bool doResume();
00866
00867 Q_SIGNALS:
00878 void mimetype( KIO::Job *job, const QString &type );
00879
00880 protected Q_SLOTS:
00885 virtual void slotResult( KJob *job );
00886
00887 protected:
00888 FileCopyJob(FileCopyJobPrivate &dd);
00889
00890 private:
00891 Q_PRIVATE_SLOT(d_func(), void slotStart())
00892 Q_PRIVATE_SLOT(d_func(), void slotData( KIO::Job *, const QByteArray &data))
00893 Q_PRIVATE_SLOT(d_func(), void slotDataReq( KIO::Job *, QByteArray &data))
00894 Q_PRIVATE_SLOT(d_func(), void slotMimetype( KIO::Job*, const QString& type ))
00895 Q_PRIVATE_SLOT(d_func(), void slotProcessedSize( KJob *job, qulonglong size ))
00896 Q_PRIVATE_SLOT(d_func(), void slotTotalSize( KJob *job, qulonglong size ))
00897 Q_PRIVATE_SLOT(d_func(), void slotPercent( KJob *job, unsigned long pct ))
00898 Q_PRIVATE_SLOT(d_func(), void slotCanResume( KIO::Job *job, KIO::filesize_t offset ))
00899
00900 Q_DECLARE_PRIVATE(FileCopyJob)
00901 };
00902
00903 class ListJobPrivate;
00911 class KIO_EXPORT ListJob : public SimpleJob {
00912 Q_OBJECT
00913
00914 public:
00915 ~ListJob();
00916
00922 const KUrl& redirectionUrl() const;
00923
00927 void setUnrestricted(bool unrestricted);
00928
00929 Q_SIGNALS:
00939 void entries( KIO::Job *job, const KIO::UDSEntryList& list);
00940
00948 void redirection( KIO::Job *job, const KUrl &url );
00949
00957 void permanentRedirection( KIO::Job *job, const KUrl &fromUrl, const KUrl &toUrl );
00958
00959 protected Q_SLOTS:
00960 virtual void slotFinished( );
00961 virtual void slotMetaData( const KIO::MetaData &_metaData);
00962 virtual void slotResult( KJob *job );
00963
00964 protected:
00965 ListJob(ListJobPrivate &dd);
00966
00967 private:
00968 Q_PRIVATE_SLOT(d_func(), void slotListEntries( const KIO::UDSEntryList& list ))
00969 Q_PRIVATE_SLOT(d_func(), void slotRedirection( const KUrl &url ))
00970 Q_PRIVATE_SLOT(d_func(), void gotEntries( KIO::Job * subjob, const KIO::UDSEntryList& list ))
00971 Q_DECLARE_PRIVATE(ListJob)
00972 };
00973
00974 class SpecialJobPrivate;
00986 class KIO_EXPORT SpecialJob : public TransferJob
00987 {
00988 Q_OBJECT
00989 public:
00996 explicit SpecialJob(const KUrl &url, const QByteArray &data = QByteArray());
00997
01002 void setArguments(const QByteArray &data);
01003
01008 QByteArray arguments() const;
01009
01010 public:
01011 ~SpecialJob();
01012
01013 private:
01014 Q_DECLARE_PRIVATE(SpecialJob)
01015 };
01016 }
01017
01018 #endif