KIO
jobclasses.h
Go to the documentation of this file.
00001 // -*- c++ -*- 00002 /* This file is part of the KDE libraries 00003 Copyright (C) 2000 Stephan Kulow <coolo@kde.org> 00004 2000-2009 David Faure <faure@kde.org> 00005 00006 This library is free software; you can redistribute it and/or 00007 modify it under the terms of the GNU Library General Public 00008 License as published by the Free Software Foundation; either 00009 version 2 of the License, or (at your option) any later version. 00010 00011 This library is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 Library General Public License for more details. 00015 00016 You should have received a copy of the GNU Library General Public License 00017 along with this library; see the file COPYING.LIB. If not, write to 00018 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00019 Boston, MA 02110-1301, USA. 00020 */ 00021 00022 #ifndef KIO_JOBCLASSES_H 00023 #define KIO_JOBCLASSES_H 00024 00025 #include <QtCore/QObject> 00026 #include <QtCore/QLinkedList> // KDE5: remove 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 namespace KIO { 00036 00042 enum JobFlag { 00046 DefaultFlags = 0, 00047 00051 HideProgressInfo = 1, 00052 00060 Resume = 2, 00061 00067 Overwrite = 4 00068 }; 00069 Q_DECLARE_FLAGS(JobFlags, JobFlag) 00070 Q_DECLARE_OPERATORS_FOR_FLAGS(JobFlags) 00071 00072 class JobUiDelegate; 00073 00074 class JobPrivate; 00094 class KIO_EXPORT Job : public KCompositeJob { 00095 Q_OBJECT 00096 00097 protected: 00098 Job(); 00099 Job(JobPrivate &dd); 00100 00101 public: 00102 virtual ~Job(); 00103 void start() {} // Since KIO autostarts its jobs 00104 00112 JobUiDelegate *ui() const; 00113 00114 protected: 00120 virtual bool doKill(); 00121 00126 virtual bool doSuspend(); 00127 00132 virtual bool doResume(); 00133 00134 public: 00152 QString errorString() const; 00153 00164 QStringList detailedErrorStrings(const KUrl *reqUrl = 0L, 00165 int method = -1) const; 00166 00177 #ifndef KDE_NO_DEPRECATED 00178 KDE_DEPRECATED void showErrorDialog( QWidget *parent = 0 ); 00179 #endif 00180 00188 bool isInteractive() const; 00189 00199 void setParentJob( Job* parentJob ); 00200 00206 Job* parentJob() const; 00207 00215 void setMetaData( const KIO::MetaData &metaData); 00216 00224 void addMetaData(const QString &key, const QString &value); 00225 00233 void addMetaData(const QMap<QString,QString> &values); 00234 00242 void mergeMetaData(const QMap<QString,QString> &values); 00243 00247 MetaData outgoingMetaData() const; 00248 00254 MetaData metaData() const; 00255 00263 QString queryMetaData(const QString &key); 00264 00265 protected: 00266 00267 Q_SIGNALS: 00275 void canceled( KJob *job ); 00276 00283 void connected( KIO::Job *job ); 00284 00285 protected: 00293 virtual bool addSubjob( KJob *job ); 00294 00302 virtual bool removeSubjob( KJob *job ); 00303 00304 private: 00311 Q_PRIVATE_SLOT(d_func(), void slotSpeed( KJob *job, unsigned long speed )) 00312 Q_DECLARE_PRIVATE(Job) 00313 }; 00314 00315 class SimpleJobPrivate; 00322 class KIO_EXPORT SimpleJob : public KIO::Job { 00323 Q_OBJECT 00324 00325 public: 00326 ~SimpleJob(); 00327 00328 protected: 00333 virtual bool doSuspend(); 00334 00339 virtual bool doResume(); 00340 00345 virtual bool doKill(); 00346 00347 public: 00352 const KUrl& url() const; 00353 00358 virtual void putOnHold(); 00359 00363 static void removeOnHold(); 00364 00370 bool isRedirectionHandlingEnabled() const; 00371 00380 void setRedirectionHandlingEnabled(bool handle); 00381 00382 public Q_SLOTS: 00388 void slotError( int , const QString & ); 00389 00390 protected Q_SLOTS: 00395 virtual void slotFinished( ); 00396 00401 virtual void slotWarning( const QString & ); 00402 00408 virtual void slotMetaData( const KIO::MetaData &_metaData); 00409 00410 protected: 00411 /* 00412 * Allow jobs that inherit SimpleJob and are aware 00413 * of redirections to store the SSL session used. 00414 * Retrieval is handled by SimpleJob::start 00415 * @param m_redirectionURL Reference to redirection URL, 00416 * used instead of m_url if not empty 00417 */ 00418 void storeSSLSessionFromJob(const KUrl &m_redirectionURL); 00419 00424 SimpleJob(SimpleJobPrivate &dd); 00425 private: 00426 Q_PRIVATE_SLOT(d_func(), void slotConnected()) 00427 Q_PRIVATE_SLOT(d_func(), void slotProcessedSize( KIO::filesize_t data_size )) 00428 Q_PRIVATE_SLOT(d_func(), void slotSpeed( unsigned long speed )) 00429 Q_PRIVATE_SLOT(d_func(), void slotTotalSize( KIO::filesize_t data_size )) 00430 Q_PRIVATE_SLOT(d_func(), void _k_slotSlaveInfoMessage(const QString&)) 00431 00432 Q_DECLARE_PRIVATE(SimpleJob) 00433 }; 00434 00435 class StatJobPrivate; 00440 class KIO_EXPORT StatJob : public SimpleJob { 00441 00442 Q_OBJECT 00443 00444 public: 00445 enum StatSide { 00446 SourceSide, 00447 DestinationSide 00448 }; 00449 00450 ~StatJob(); 00451 00459 void setSide(StatSide side); 00460 00468 #ifndef KDE_NO_DEPRECATED 00469 KDE_DEPRECATED void setSide( bool source ); 00470 #endif 00471 00481 void setDetails( short int details ); 00482 00489 const UDSEntry & statResult() const; 00490 00514 KUrl mostLocalUrl() const; 00515 00516 Q_SIGNALS: 00524 void redirection( KIO::Job *job, const KUrl &url ); 00525 00533 void permanentRedirection( KIO::Job *job, const KUrl &fromUrl, const KUrl &toUrl ); 00534 00535 protected Q_SLOTS: 00536 virtual void slotFinished(); 00537 virtual void slotMetaData( const KIO::MetaData &_metaData); 00538 protected: 00539 StatJob(StatJobPrivate &dd); 00540 00541 private: 00542 Q_PRIVATE_SLOT(d_func(), void slotStatEntry( const KIO::UDSEntry & entry )) 00543 Q_PRIVATE_SLOT(d_func(), void slotRedirection( const KUrl &url)) 00544 Q_DECLARE_PRIVATE(StatJob) 00545 }; 00546 00547 class FileCopyJobPrivate; 00548 class TransferJobPrivate; 00555 class KIO_EXPORT TransferJob : public SimpleJob { 00556 Q_OBJECT 00557 00558 public: 00559 ~TransferJob(); 00560 00565 void setModificationTime( const QDateTime& mtime ); 00566 00574 bool isErrorPage() const; 00575 00582 void setAsyncDataEnabled(bool enabled); 00583 00589 void sendAsyncData(const QByteArray &data); 00590 00599 #ifndef KDE_NO_DEPRECATED 00600 KDE_DEPRECATED void setReportDataSent(bool enabled); 00601 #endif 00602 00610 #ifndef KDE_NO_DEPRECATED 00611 KDE_DEPRECATED bool reportDataSent() const; 00612 #endif 00613 00619 QString mimetype() const; 00620 00626 void setTotalSize(KIO::filesize_t bytes); 00627 00628 protected: 00633 virtual void slotResult( KJob *job ); 00634 00638 virtual bool doResume(); 00639 00640 Q_SIGNALS: 00650 void data( KIO::Job *job, const QByteArray &data ); 00651 00663 void dataReq( KIO::Job *job, QByteArray &data ); 00664 00672 void redirection( KIO::Job *job, const KUrl &url ); 00673 00681 void permanentRedirection( KIO::Job *job, const KUrl &fromUrl, const KUrl &toUrl ); 00682 00688 void mimetype( KIO::Job *job, const QString &type ); 00689 00697 void canResume( KIO::Job *job, KIO::filesize_t offset ); 00698 00699 00700 protected Q_SLOTS: 00701 virtual void slotRedirection( const KUrl &url); 00702 virtual void slotFinished(); 00703 virtual void slotData( const QByteArray &data); 00704 virtual void slotDataReq(); 00705 virtual void slotMimetype( const QString &mimetype ); 00706 virtual void slotMetaData( const KIO::MetaData &_metaData); 00707 00708 protected: 00709 TransferJob(TransferJobPrivate &dd); 00710 private: 00711 Q_PRIVATE_SLOT(d_func(), void slotErrorPage()) 00712 Q_PRIVATE_SLOT(d_func(), void slotCanResume( KIO::filesize_t offset )) 00713 Q_PRIVATE_SLOT(d_func(), void slotPostRedirection()) 00714 Q_PRIVATE_SLOT(d_func(), void slotNeedSubUrlData()) 00715 Q_PRIVATE_SLOT(d_func(), void slotSubUrlData(KIO::Job*, const QByteArray &)) 00716 Q_PRIVATE_SLOT(d_func(), void slotDataReqFromDevice()) 00717 Q_DECLARE_PRIVATE(TransferJob) 00718 00719 // A FileCopyJob may control one or more TransferJobs 00720 friend class FileCopyJob; 00721 friend class FileCopyJobPrivate; 00722 }; 00723 00724 class StoredTransferJobPrivate; 00743 class KIO_EXPORT StoredTransferJob : public KIO::TransferJob { 00744 Q_OBJECT 00745 00746 public: 00747 ~StoredTransferJob(); 00748 00754 void setData( const QByteArray& arr ); 00755 00760 QByteArray data() const; 00761 00762 protected: 00763 StoredTransferJob(StoredTransferJobPrivate &dd); 00764 private: 00765 Q_PRIVATE_SLOT(d_func(), void slotStoredData( KIO::Job *job, const QByteArray &data )) 00766 Q_PRIVATE_SLOT(d_func(), void slotStoredDataReq( KIO::Job *job, QByteArray &data )) 00767 00768 Q_DECLARE_PRIVATE(StoredTransferJob) 00769 }; 00770 00771 class MultiGetJobPrivate; 00778 class KIO_EXPORT MultiGetJob : public TransferJob { 00779 Q_OBJECT 00780 00781 public: 00782 virtual ~MultiGetJob(); 00783 00791 void get(long id, const KUrl &url, const MetaData &metaData); 00792 00793 Q_SIGNALS: 00800 void data( long id, const QByteArray &data); 00801 00807 void mimetype( long id, const QString &type ); 00808 00816 void result( long id); 00817 00818 protected Q_SLOTS: 00819 virtual void slotRedirection( const KUrl &url); 00820 virtual void slotFinished(); 00821 virtual void slotData( const QByteArray &data); 00822 virtual void slotMimetype( const QString &mimetype ); 00823 00824 protected: 00825 MultiGetJob(MultiGetJobPrivate &dd); 00826 private: 00827 Q_DECLARE_PRIVATE(MultiGetJob) 00828 }; 00829 00830 class MimetypeJobPrivate; 00837 class KIO_EXPORT MimetypeJob : public TransferJob { 00838 Q_OBJECT 00839 00840 public: 00841 ~MimetypeJob(); 00842 00843 protected Q_SLOTS: 00844 virtual void slotFinished( ); 00845 protected: 00846 MimetypeJob(MimetypeJobPrivate &dd); 00847 private: 00848 Q_DECLARE_PRIVATE(MimetypeJob) 00849 }; 00850 00856 class KIO_EXPORT FileCopyJob : public Job { 00857 Q_OBJECT 00858 00859 public: 00860 ~FileCopyJob(); 00866 void setSourceSize(KIO::filesize_t size); 00867 00875 void setModificationTime( const QDateTime& mtime ); 00876 00881 KUrl srcUrl() const; 00882 00887 KUrl destUrl() const; 00888 00889 bool doSuspend(); 00890 bool doResume(); 00891 00892 Q_SIGNALS: 00903 void mimetype( KIO::Job *job, const QString &type ); 00904 00905 protected Q_SLOTS: 00910 virtual void slotResult( KJob *job ); 00911 00912 protected: 00913 FileCopyJob(FileCopyJobPrivate &dd); 00914 00915 private: 00916 Q_PRIVATE_SLOT(d_func(), void slotStart()) 00917 Q_PRIVATE_SLOT(d_func(), void slotData( KIO::Job *, const QByteArray &data)) 00918 Q_PRIVATE_SLOT(d_func(), void slotDataReq( KIO::Job *, QByteArray &data)) 00919 Q_PRIVATE_SLOT(d_func(), void slotMimetype( KIO::Job*, const QString& type )) 00920 Q_PRIVATE_SLOT(d_func(), void slotProcessedSize( KJob *job, qulonglong size )) 00921 Q_PRIVATE_SLOT(d_func(), void slotTotalSize( KJob *job, qulonglong size )) 00922 Q_PRIVATE_SLOT(d_func(), void slotPercent( KJob *job, unsigned long pct )) 00923 Q_PRIVATE_SLOT(d_func(), void slotCanResume( KIO::Job *job, KIO::filesize_t offset )) 00924 00925 Q_DECLARE_PRIVATE(FileCopyJob) 00926 }; 00927 00928 class ListJobPrivate; 00936 class KIO_EXPORT ListJob : public SimpleJob { 00937 Q_OBJECT 00938 00939 public: 00940 ~ListJob(); 00941 00947 const KUrl& redirectionUrl() const; 00948 00952 void setUnrestricted(bool unrestricted); 00953 00954 Q_SIGNALS: 00964 void entries( KIO::Job *job, const KIO::UDSEntryList& list); // TODO KDE5: use KIO::ListJob* argument to avoid casting 00965 00973 void redirection( KIO::Job *job, const KUrl &url ); 00974 00982 void permanentRedirection( KIO::Job *job, const KUrl &fromUrl, const KUrl &toUrl ); 00983 00984 protected Q_SLOTS: 00985 virtual void slotFinished( ); 00986 virtual void slotMetaData( const KIO::MetaData &_metaData); 00987 virtual void slotResult( KJob *job ); 00988 00989 protected: 00990 ListJob(ListJobPrivate &dd); 00991 00992 private: 00993 Q_PRIVATE_SLOT(d_func(), void slotListEntries( const KIO::UDSEntryList& list )) 00994 Q_PRIVATE_SLOT(d_func(), void slotRedirection( const KUrl &url )) 00995 Q_PRIVATE_SLOT(d_func(), void gotEntries( KIO::Job * subjob, const KIO::UDSEntryList& list )) 00996 Q_DECLARE_PRIVATE(ListJob) 00997 }; 00998 00999 class SpecialJobPrivate; 01011 class KIO_EXPORT SpecialJob : public TransferJob 01012 { 01013 Q_OBJECT 01014 public: 01021 explicit SpecialJob(const KUrl &url, const QByteArray &data = QByteArray()); 01022 01027 void setArguments(const QByteArray &data); 01028 01033 QByteArray arguments() const; 01034 01035 public: 01036 ~SpecialJob(); 01037 01038 private: 01039 Q_DECLARE_PRIVATE(SpecialJob) 01040 }; 01041 } 01042 01043 #endif
KDE 4.7 API Reference