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
00107 virtual bool doSuspend();
00108
00109 Q_SIGNALS:
00110
00116 void totalFiles( KJob *job, unsigned long files );
00122 void totalDirs( KJob *job, unsigned long dirs );
00123
00131 void aboutToCreate( KIO::Job *job, const QList<KIO::CopyInfo> &files);
00132
00138 void processedFiles( KIO::Job *job, unsigned long files );
00144 void processedDirs( KIO::Job *job, unsigned long dirs );
00145
00157 void copying( KIO::Job *job, const KUrl& src, const KUrl& dest );
00169 void linking( KIO::Job *job, const QString& target, const KUrl& to );
00181 void moving( KIO::Job *job, const KUrl& from, const KUrl& to );
00190 void creatingDir( KIO::Job *job, const KUrl& dir );
00198 void renamed( KIO::Job *job, const KUrl& from, const KUrl& to );
00199
00215 void copyingDone( KIO::Job *job, const KUrl &from, const KUrl &to, time_t mtime, bool directory, bool renamed );
00225 void copyingLinkDone( KIO::Job *job, const KUrl &from, const QString& target, const KUrl& to );
00226 protected Q_SLOTS:
00227 virtual void slotResult( KJob *job );
00228
00229 protected:
00230 CopyJob(CopyJobPrivate &dd);
00231
00232 private:
00233 Q_PRIVATE_SLOT(d_func(), void slotStart())
00234 Q_PRIVATE_SLOT(d_func(), void slotEntries( KIO::Job*, const KIO::UDSEntryList& list ))
00235 Q_PRIVATE_SLOT(d_func(), void slotProcessedSize( KJob*, qulonglong data_size ))
00236 Q_PRIVATE_SLOT(d_func(), void slotTotalSize( KJob*, qulonglong size ))
00237 Q_PRIVATE_SLOT(d_func(), void slotReport())
00238
00239 Q_DECLARE_PRIVATE(CopyJob)
00240 };
00241
00255 KIO_EXPORT CopyJob *copy( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00256
00270 KIO_EXPORT CopyJob *copyAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00271
00280 KIO_EXPORT CopyJob *copy( const KUrl::List& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00281
00292 KIO_EXPORT CopyJob *move( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00303 KIO_EXPORT CopyJob *moveAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00313 KIO_EXPORT CopyJob *move( const KUrl::List& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00314
00325 KIO_EXPORT CopyJob *link( const KUrl& src, const KUrl& destDir, JobFlags flags = DefaultFlags );
00326
00338 KIO_EXPORT CopyJob *link( const KUrl::List& src, const KUrl& destDir, JobFlags flags = DefaultFlags );
00339
00353 KIO_EXPORT CopyJob *linkAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags );
00354
00364 KIO_EXPORT CopyJob *trash( const KUrl& src, JobFlags flags = DefaultFlags );
00365
00374 KIO_EXPORT CopyJob *trash( const KUrl::List& src, JobFlags flags = DefaultFlags );
00375
00376 }
00377
00378 #endif