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
00116 virtual bool doSuspend();
00117
00118 Q_SIGNALS:
00119
00125 void totalFiles( KJob *job, unsigned long files );
00131 void totalDirs( KJob *job, unsigned long dirs );
00132
00140 void aboutToCreate( KIO::Job *job, const QList<KIO::CopyInfo> &files);
00141
00147 void processedFiles( KIO::Job *job, unsigned long files );
00153 void processedDirs( KIO::Job *job, unsigned long dirs );
00154
00166 void copying( KIO::Job *job, const KUrl& src, const KUrl& dest );
00178 void linking( KIO::Job *job, const QString& target, const KUrl& to );
00190 void moving( KIO::Job *job, const KUrl& from, const KUrl& to );
00199 void creatingDir( KIO::Job *job, const KUrl& dir );
00207 void renamed( KIO::Job *job, const KUrl& from, const KUrl& to );
00208
00224 void copyingDone( KIO::Job *job, const KUrl &from, const KUrl &to, time_t mtime, bool directory, bool renamed );
00234 void copyingLinkDone( KIO::Job *job, const KUrl &from, const QString& target, const KUrl& to );
00235 protected Q_SLOTS:
00236 virtual void slotResult( KJob *job );
00237
00238 protected:
00239 CopyJob(CopyJobPrivate &dd);
00240
00241 private:
00242 Q_PRIVATE_SLOT(d_func(), void slotStart())
00243 Q_PRIVATE_SLOT(d_func(), void slotEntries( KIO::Job*, const KIO::UDSEntryList& list ))
00244 Q_PRIVATE_SLOT(d_func(), void slotProcessedSize( KJob*, qulonglong data_size ))
00245 Q_PRIVATE_SLOT(d_func(), void slotTotalSize( KJob*, qulonglong size ))
00246 Q_PRIVATE_SLOT(d_func(), void slotReport())
00247
00248 Q_DECLARE_PRIVATE(CopyJob)
00249 };
00250
00264 KIO_EXPORT CopyJob *copy( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00265
00279 KIO_EXPORT CopyJob *copyAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00280
00289 KIO_EXPORT CopyJob *copy( const KUrl::List& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00290
00301 KIO_EXPORT CopyJob *move( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00312 KIO_EXPORT CopyJob *moveAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00322 KIO_EXPORT CopyJob *move( const KUrl::List& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00323
00334 KIO_EXPORT CopyJob *link( const KUrl& src, const KUrl& destDir, JobFlags flags = DefaultFlags );
00335
00347 KIO_EXPORT CopyJob *link( const KUrl::List& src, const KUrl& destDir, JobFlags flags = DefaultFlags );
00348
00362 KIO_EXPORT CopyJob *linkAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00363
00373 KIO_EXPORT CopyJob *trash( const KUrl& src, JobFlags flags = DefaultFlags );
00374
00383 KIO_EXPORT CopyJob *trash( const KUrl::List& src, JobFlags flags = DefaultFlags );
00384
00385 }
00386
00387 #endif