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 KUrl::List srcUrls() const;
00082
00087 KUrl destUrl() const;
00088
00096 void setDefaultPermissions( bool b );
00097
00101 virtual bool doSuspend();
00102
00103 Q_SIGNALS:
00104
00110 void totalFiles( KJob *job, unsigned long files );
00116 void totalDirs( KJob *job, unsigned long dirs );
00117
00125 void aboutToCreate( KIO::Job *job, const QList<KIO::CopyInfo> &files);
00126
00132 void processedFiles( KIO::Job *job, unsigned long files );
00138 void processedDirs( KIO::Job *job, unsigned long dirs );
00139
00147 void copying( KIO::Job *job, const KUrl& src, const KUrl& dest );
00155 void linking( KIO::Job *job, const QString& target, const KUrl& to );
00163 void moving( KIO::Job *job, const KUrl& from, const KUrl& to );
00169 void creatingDir( KIO::Job *job, const KUrl& dir );
00176 void renamed( KIO::Job *job, const KUrl& from, const KUrl& to );
00177
00192 void copyingDone( KIO::Job *job, const KUrl &from, const KUrl &to, time_t mtime, bool directory, bool renamed );
00202 void copyingLinkDone( KIO::Job *job, const KUrl &from, const QString& target, const KUrl& to );
00203 protected Q_SLOTS:
00204 virtual void slotResult( KJob *job );
00205
00206 protected:
00207 CopyJob(CopyJobPrivate &dd);
00208
00209 private:
00210 Q_PRIVATE_SLOT(d_func(), void slotStart())
00211 Q_PRIVATE_SLOT(d_func(), void slotEntries( KIO::Job*, const KIO::UDSEntryList& list ))
00212 Q_PRIVATE_SLOT(d_func(), void slotProcessedSize( KJob*, qulonglong data_size ))
00213 Q_PRIVATE_SLOT(d_func(), void slotTotalSize( KJob*, qulonglong size ))
00214 Q_PRIVATE_SLOT(d_func(), void slotReport())
00215
00216 Q_DECLARE_PRIVATE(CopyJob)
00217 };
00218
00232 KIO_EXPORT CopyJob *copy( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00233
00247 KIO_EXPORT CopyJob *copyAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00248
00257 KIO_EXPORT CopyJob *copy( const KUrl::List& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00258
00269 KIO_EXPORT CopyJob *move( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00280 KIO_EXPORT CopyJob *moveAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00290 KIO_EXPORT CopyJob *move( const KUrl::List& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00291
00302 KIO_EXPORT CopyJob *link( const KUrl& src, const KUrl& destDir, JobFlags flags = DefaultFlags );
00303
00315 KIO_EXPORT CopyJob *link( const KUrl::List& src, const KUrl& destDir, JobFlags flags = DefaultFlags );
00316
00330 KIO_EXPORT CopyJob *linkAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00331
00341 KIO_EXPORT CopyJob *trash( const KUrl& src, JobFlags flags = DefaultFlags );
00342
00351 KIO_EXPORT CopyJob *trash( const KUrl::List& src, JobFlags flags = DefaultFlags );
00352
00353 }
00354
00355 #endif