KIO
copyjob.h
Go to the documentation of this file.
00001 // -*- c++ -*- 00002 /* This file is part of the KDE libraries 00003 Copyright 2000 Stephan Kulow <coolo@kde.org> 00004 Copyright 2000-2006 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_COPYJOB_H 00023 #define KIO_COPYJOB_H 00024 00025 #include <QtCore/QObject> 00026 #include <QtCore/QStringList> 00027 00028 #include <sys/types.h> // time_t 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; // for symlinks only 00046 int permissions; 00047 time_t ctime; 00048 time_t mtime; 00049 KIO::filesize_t size; // 0 for dirs 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 slotProcessedSize( KJob*, qulonglong data_size )) 00254 Q_PRIVATE_SLOT(d_func(), void slotTotalSize( KJob*, qulonglong size )) 00255 Q_PRIVATE_SLOT(d_func(), void slotReport()) 00256 00257 Q_DECLARE_PRIVATE(CopyJob) 00258 }; 00259 00277 KIO_EXPORT CopyJob *copy( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags ); 00278 00296 KIO_EXPORT CopyJob *copyAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags ); 00297 00309 KIO_EXPORT CopyJob *copy( const KUrl::List& src, const KUrl& dest, JobFlags flags = DefaultFlags ); 00310 00324 KIO_EXPORT CopyJob *move( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags ); 00338 KIO_EXPORT CopyJob *moveAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags ); 00351 KIO_EXPORT CopyJob *move( const KUrl::List& src, const KUrl& dest, JobFlags flags = DefaultFlags ); 00352 00363 KIO_EXPORT CopyJob *link( const KUrl& src, const KUrl& destDir, JobFlags flags = DefaultFlags ); 00364 00376 KIO_EXPORT CopyJob *link( const KUrl::List& src, const KUrl& destDir, JobFlags flags = DefaultFlags ); 00377 00391 KIO_EXPORT CopyJob *linkAs( const KUrl& src, const KUrl& dest, JobFlags flags = DefaultFlags ); 00392 00402 KIO_EXPORT CopyJob *trash( const KUrl& src, JobFlags flags = DefaultFlags ); 00403 00412 KIO_EXPORT CopyJob *trash( const KUrl::List& src, JobFlags flags = DefaultFlags ); 00413 00414 } 00415 00416 #endif
KDE 4.6 API Reference