00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KIO_COPYJOB_H
00023 #define KIO_COPYJOB_H
00024
00025 #include <QtCore/QObject>
00026 #include <QtCore/QStringList>
00027
00028 #include <sys/types.h>
00029
00030 #include <kurl.h>
00031
00032 #include "jobclasses.h"
00033
00034 class QTimer;
00035
00036 namespace KIO {
00037
00041 struct CopyInfo
00042 {
00043 KUrl uSource;
00044 KUrl uDest;
00045 QString linkDest;
00046 int permissions;
00047 time_t ctime;
00048 time_t mtime;
00049 KIO::filesize_t size;
00050 };
00051
00052 class CopyJobPrivate;
00065 class KIO_EXPORT CopyJob : public Job {
00066
00067 Q_OBJECT
00068
00069 public:
00073 enum CopyMode { Copy, Move, Link };
00074
00075 virtual ~CopyJob();
00076
00081 CopyMode operationMode() const;
00082
00087 KUrl::List srcUrls() const;
00088
00093 KUrl destUrl() const;
00094
00102 void setDefaultPermissions( bool b );
00103
00111 void setAutoSkip(bool autoSkip);
00112
00119 void setWriteIntoExistingDirectories(bool overwriteAllDirs);
00120
00124 virtual bool doSuspend();
00125
00126 Q_SIGNALS:
00127
00133 void totalFiles( KJob *job, unsigned long files );
00139 void totalDirs( KJob *job, unsigned long dirs );
00140
00148 void aboutToCreate( KIO::Job *job, const QList<KIO::CopyInfo> &files);
00149
00155 void processedFiles( KIO::Job *job, unsigned long files );
00161 void processedDirs( KIO::Job *job, unsigned long dirs );
00162
00174 void copying( KIO::Job *job, const KUrl& src, const KUrl& dest );
00186 void linking( KIO::Job *job, const QString& target, const KUrl& to );
00198 void moving( KIO::Job *job, const KUrl& from, const KUrl& to );
00207 void creatingDir( KIO::Job *job, const KUrl& dir );
00215 void renamed( KIO::Job *job, const KUrl& from, const KUrl& to );
00216
00232 void copyingDone( KIO::Job *job, const KUrl &from, const KUrl &to, time_t mtime, bool directory, bool renamed );
00242 void copyingLinkDone( KIO::Job *job, const KUrl &from, const QString& target, const KUrl& to );
00243 protected Q_SLOTS:
00244 virtual void slotResult( KJob *job );
00245
00246 protected:
00247 CopyJob(CopyJobPrivate &dd);
00248 void emitResult();
00249
00250 private:
00251 Q_PRIVATE_SLOT(d_func(), void slotStart())
00252 Q_PRIVATE_SLOT(d_func(), void slotEntries( KIO::Job*, const KIO::UDSEntryList& list ))
00253 Q_PRIVATE_SLOT(d_func(), void slotSubError( KIO::ListJob*, KIO::ListJob* ))
00254 Q_PRIVATE_SLOT(d_func(), void slotProcessedSize( KJob*, qulonglong data_size ))
00255 Q_PRIVATE_SLOT(d_func(), void slotTotalSize( KJob*, qulonglong size ))
00256 Q_PRIVATE_SLOT(d_func(), void slotReport())
00257
00258 Q_DECLARE_PRIVATE(CopyJob)
00259 };
00260
00274 KIO_EXPORT CopyJob *copy( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00275
00289 KIO_EXPORT CopyJob *copyAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00290
00299 KIO_EXPORT CopyJob *copy( const KUrl::List& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00300
00311 KIO_EXPORT CopyJob *move( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00322 KIO_EXPORT CopyJob *moveAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00332 KIO_EXPORT CopyJob *move( const KUrl::List& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00333
00344 KIO_EXPORT CopyJob *link( const KUrl& src, const KUrl& destDir, JobFlags flags = DefaultFlags );
00345
00357 KIO_EXPORT CopyJob *link( const KUrl::List& src, const KUrl& destDir, JobFlags flags = DefaultFlags );
00358
00372 KIO_EXPORT CopyJob *linkAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00373
00383 KIO_EXPORT CopyJob *trash( const KUrl& src, JobFlags flags = DefaultFlags );
00384
00393 KIO_EXPORT CopyJob *trash( const KUrl::List& src, JobFlags flags = DefaultFlags );
00394
00395 }
00396
00397 #endif