00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __tdeio_jobclasses_h__
00023 #define __tdeio_jobclasses_h__
00024
00025 #include <tqobject.h>
00026 #include <tqptrlist.h>
00027 #include <tqstring.h>
00028 #include <tqstringlist.h>
00029 #include <tqguardedptr.h>
00030
00031 #include <sys/types.h>
00032 #include <sys/stat.h>
00033
00034 #include <kurl.h>
00035 #include <tdeio/global.h>
00036
00037 class Observer;
00038 class TQTimer;
00039
00040 #define TDEIO_COPYJOB_HAS_SETINTERACTIVE // new in 3.4. Used by tdeio_trash.
00041
00042 namespace TDEIO {
00043
00044 class Slave;
00045 class SlaveInterface;
00046
00047
00068 class TDEIO_EXPORT Job : public TQObject {
00069 Q_OBJECT
00070
00071 protected:
00072 Job( bool showProgressInfo );
00073
00074 public:
00075 virtual ~Job();
00076
00087 virtual void kill( bool quietly = true );
00088
00095 int error() const { return m_error; }
00096
00101 int progressId() const { return m_progressId; }
00102
00111 const TQString & errorText() const { return m_errorText; }
00112
00130 TQString errorString() const;
00131
00142 TQStringList detailedErrorStrings(const KURL *reqUrl = 0L,
00143 int method = -1) const;
00144
00153 void showErrorDialog( TQWidget * parent = 0L );
00154
00168 void setAutoErrorHandlingEnabled( bool enable, TQWidget *parentWidget = 0 );
00169
00175 bool isAutoErrorHandlingEnabled() const;
00176
00190 void setAutoWarningHandlingEnabled( bool enable );
00191
00199 bool isAutoWarningHandlingEnabled() const;
00200
00208 void setInteractive(bool enable);
00209
00216 bool isInteractive() const;
00222 void setWindow(TQWidget *window);
00223
00229 TQWidget *window() const;
00230
00236 void updateUserTimestamp( unsigned long time );
00237
00248 void setParentJob( Job* parentJob );
00249
00256 Job* parentJob() const;
00257
00265 void setMetaData( const TDEIO::MetaData &metaData);
00266
00274 void addMetaData(const TQString &key, const TQString &value);
00275
00283 void addMetaData(const TQMap<TQString,TQString> &values);
00284
00292 void mergeMetaData(const TQMap<TQString,TQString> &values);
00293
00297 MetaData outgoingMetaData() const;
00298
00304 MetaData metaData() const;
00305
00313 TQString queryMetaData(const TQString &key);
00314
00320 TDEIO::filesize_t getProcessedSize();
00321
00322 signals:
00328 void result( TDEIO::Job *job );
00329
00337 void canceled( TDEIO::Job *job );
00338
00345 void infoMessage( TDEIO::Job *job, const TQString & msg );
00346
00347
00354 void warning( TDEIO::Job *job, const TQString & msg );
00355
00356
00363 void connected( TDEIO::Job *job );
00364
00373 void percent( TDEIO::Job *job, unsigned long percent );
00374
00381 void totalSize( TDEIO::Job *job, TDEIO::filesize_t size );
00382
00389 void processedSize( TDEIO::Job *job, TDEIO::filesize_t size );
00390
00396 void speed( TDEIO::Job *job, unsigned long speed );
00397
00398 protected slots:
00407 virtual void slotResult( TDEIO::Job *job );
00408
00415 void slotSpeed( TDEIO::Job *job, unsigned long speed );
00422 void slotInfoMessage( TDEIO::Job *job, const TQString &msg );
00423
00427 void slotSpeedTimeout();
00428
00429 protected:
00439 virtual void addSubjob( Job *job, bool inheritMetaData=true );
00440
00449 virtual void removeSubjob( Job *job );
00458 void removeSubjob( Job *job, bool mergeMetaData, bool emitResultIfLast );
00459
00468 void emitPercent( TDEIO::filesize_t processedSize, TDEIO::filesize_t totalSize );
00469
00476 void emitSpeed( unsigned long speed );
00477
00482 void emitResult();
00483
00488 void setProcessedSize(TDEIO::filesize_t size);
00489
00493 unsigned long userTimestamp() const;
00494
00500 enum { EF_TransferJobAsync = (1 << 0),
00501 EF_TransferJobNeedData = (1 << 1),
00502 EF_TransferJobDataSent = (1 << 2),
00503 EF_ListJobUnrestricted = (1 << 3) };
00504 int &extraFlags();
00505
00506 TQPtrList<Job> subjobs;
00507 int m_error;
00508 TQString m_errorText;
00509 unsigned long m_percent;
00510 int m_progressId;
00511 TQTimer *m_speedTimer;
00512 TQGuardedPtr<TQWidget> m_window;
00513 MetaData m_outgoingMetaData;
00514 MetaData m_incomingMetaData;
00515 protected:
00516 virtual void virtual_hook( int id, void* data );
00517 private:
00518 class JobPrivate;
00519 JobPrivate *d;
00520 };
00521
00528 class TDEIO_EXPORT SimpleJob : public TDEIO::Job {
00529 Q_OBJECT
00530
00531 public:
00540 SimpleJob(const KURL& url, int command, const TQByteArray &packedArgs,
00541 bool showProgressInfo);
00542
00543 ~SimpleJob();
00544
00549 const KURL& url() const { return m_url; }
00550
00558 virtual void kill( bool quietly = true );
00559
00564 virtual void putOnHold();
00565
00569 static void removeOnHold();
00570
00576 virtual void start( Slave *slave );
00577
00582 void slaveDone();
00583
00588 Slave *slave() const { return m_slave; }
00589
00593 int command() const { return m_command; }
00594
00595 public slots:
00601 void slotTotalSize( TDEIO::filesize_t data_size );
00602
00603 protected slots:
00608 virtual void slotFinished( );
00609
00614 void slotWarning( const TQString & );
00615
00621 void slotInfoMessage( const TQString &s );
00622
00627 void slotConnected();
00628
00634 void slotProcessedSize( TDEIO::filesize_t data_size );
00640 void slotSpeed( unsigned long speed );
00641
00647 virtual void slotMetaData( const TDEIO::MetaData &_metaData);
00648
00649 public slots:
00655 virtual void slotError( int , const TQString & );
00656
00657 protected slots:
00661 void slotNeedProgressId();
00662
00663 protected:
00664 Slave * m_slave;
00665 TQByteArray m_packedArgs;
00666 KURL m_url;
00667 KURL m_subUrl;
00668 int m_command;
00669 TDEIO::filesize_t m_totalSize;
00670 protected:
00671 virtual void virtual_hook( int id, void* data );
00672
00673
00674
00675
00676
00677
00678
00679 void storeSSLSessionFromJob(const KURL &m_redirectionURL);
00680 private:
00681 class SimpleJobPrivate* d;
00682 };
00683
00688 class TDEIO_EXPORT StatJob : public SimpleJob {
00689
00690 Q_OBJECT
00691
00692 public:
00700 StatJob(const KURL& url, int command, const TQByteArray &packedArgs, bool showProgressInfo);
00701
00709 void setSide( bool source ) { m_bSource = source; }
00710
00720 void setDetails( short int details ) { m_details = details; }
00721
00727 const UDSEntry & statResult() const { return m_statResult; }
00728
00735 virtual void start( Slave *slave );
00736
00737 signals:
00745 void redirection( TDEIO::Job *job, const KURL &url );
00746
00755 void permanentRedirection( TDEIO::Job *job, const KURL &fromUrl, const KURL &toUrl );
00756
00757 protected slots:
00758 void slotStatEntry( const TDEIO::UDSEntry & entry );
00759 void slotRedirection( const KURL &url);
00760 virtual void slotFinished();
00761 virtual void slotMetaData( const TDEIO::MetaData &_metaData);
00762
00763 protected:
00764 UDSEntry m_statResult;
00765 KURL m_redirectionURL;
00766 bool m_bSource;
00767 short int m_details;
00768 protected:
00769 virtual void virtual_hook( int id, void* data );
00770 private:
00771 class StatJobPrivate;
00772 StatJobPrivate *d;
00773 };
00774
00780 class TDEIO_EXPORT MkdirJob : public SimpleJob {
00781
00782 Q_OBJECT
00783
00784 public:
00792 MkdirJob(const KURL& url, int command, const TQByteArray &packedArgs, bool showProgressInfo);
00793
00800 virtual void start( Slave *slave );
00801
00802 signals:
00810 void redirection( TDEIO::Job *job, const KURL &url );
00811
00819 void permanentRedirection( TDEIO::Job *job, const KURL &fromUrl, const KURL &toUrl );
00820
00821 protected slots:
00822 void slotRedirection( const KURL &url);
00823 virtual void slotFinished();
00824
00825 protected:
00826 KURL m_redirectionURL;
00827
00828 protected:
00829 virtual void virtual_hook( int id, void* data );
00830 private:
00831 class MkdirJobPrivate;
00832 MkdirJobPrivate *d;
00833 };
00834
00839 class TDEIO_EXPORT DirectCopyJob : public SimpleJob {
00840 Q_OBJECT
00841
00842 public:
00846 DirectCopyJob(const KURL& url, int command, const TQByteArray &packedArgs,
00847 bool showProgressInfo);
00854 virtual void start(Slave *slave);
00855
00856 signals:
00862 void canResume( TDEIO::Job *job, TDEIO::filesize_t offset );
00863
00864 private slots:
00865 void slotCanResume( TDEIO::filesize_t offset );
00866 };
00867
00868
00875 class TDEIO_EXPORT TransferJob : public SimpleJob {
00876 Q_OBJECT
00877
00878 public:
00888 TransferJob(const KURL& url, int command,
00889 const TQByteArray &packedArgs,
00890 const TQByteArray &_staticData,
00891 bool showProgressInfo);
00892
00899 virtual void start(Slave *slave);
00900
00905 virtual void slotResult( TDEIO::Job *job );
00906
00910 void suspend();
00911
00915 void resume();
00916
00921 bool isSuspended() const { return m_suspended; }
00922
00923
00931 bool isErrorPage() const { return m_errorPage; }
00932
00940 void setAsyncDataEnabled(bool enabled);
00941
00948 void sendAsyncData(const TQByteArray &data);
00949
00957 void setReportDataSent(bool enabled);
00958
00965 bool reportDataSent();
00966
00967 signals:
00977 void data( TDEIO::Job *job, const TQByteArray &data );
00978
00990 void dataReq( TDEIO::Job *job, TQByteArray &data );
00991
00999 void redirection( TDEIO::Job *job, const KURL &url );
01000
01009 void permanentRedirection( TDEIO::Job *job, const KURL &fromUrl, const KURL &toUrl );
01010
01016 void mimetype( TDEIO::Job *job, const TQString &type );
01017
01025 void canResume( TDEIO::Job *job, TDEIO::filesize_t offset );
01026
01027
01028 protected slots:
01029 virtual void slotRedirection( const KURL &url);
01030 virtual void slotFinished();
01031 virtual void slotData( const TQByteArray &data);
01032 virtual void slotDataReq();
01033 virtual void slotMimetype( const TQString &mimetype );
01034 virtual void slotNeedSubURLData();
01035 virtual void slotSubURLData(TDEIO::Job*, const TQByteArray &);
01036 virtual void slotMetaData( const TDEIO::MetaData &_metaData);
01037 void slotErrorPage();
01038 void slotCanResume( TDEIO::filesize_t offset );
01039 void slotPostRedirection();
01040
01041 protected:
01042 bool m_suspended;
01043 bool m_errorPage;
01044 TQByteArray staticData;
01045 KURL m_redirectionURL;
01046 KURL::List m_redirectionList;
01047 TQString m_mimetype;
01048 TransferJob *m_subJob;
01049 protected:
01050 virtual void virtual_hook( int id, void* data );
01051 private:
01052 class TransferJobPrivate *d;
01053 };
01054
01075 class TDEIO_EXPORT StoredTransferJob : public TDEIO::TransferJob {
01076 Q_OBJECT
01077
01078 public:
01088 StoredTransferJob(const KURL& url, int command,
01089 const TQByteArray &packedArgs,
01090 const TQByteArray &_staticData,
01091 bool showProgressInfo);
01092
01098 void setData( const TQByteArray& arr );
01099
01104 TQByteArray data() const { return m_data; }
01105
01106 private slots:
01107 void slotStoredData( TDEIO::Job *job, const TQByteArray &data );
01108 void slotStoredDataReq( TDEIO::Job *job, TQByteArray &data );
01109 private:
01110 TQByteArray m_data;
01111 int m_uploadOffset;
01112 };
01113
01120 class TDEIO_EXPORT MultiGetJob : public TransferJob {
01121 Q_OBJECT
01122
01123 public:
01131 MultiGetJob(const KURL& url, bool showProgressInfo);
01132
01139 virtual void start(Slave *slave);
01140
01148 void get(long id, const KURL &url, const MetaData &metaData);
01149
01150 signals:
01157 void data( long id, const TQByteArray &data);
01158
01164 void mimetype( long id, const TQString &type );
01165
01173 void result( long id);
01174
01175 protected slots:
01176 virtual void slotRedirection( const KURL &url);
01177 virtual void slotFinished();
01178 virtual void slotData( const TQByteArray &data);
01179 virtual void slotMimetype( const TQString &mimetype );
01180 private:
01181 struct GetRequest {
01182 public:
01183 GetRequest(long _id, const KURL &_url, const MetaData &_metaData)
01184 : id(_id), url(_url), metaData(_metaData) { }
01185 long id;
01186 KURL url;
01187 MetaData metaData;
01188 };
01189 bool findCurrentEntry();
01190 void flushQueue(TQPtrList<GetRequest> &queue);
01191
01192 TQPtrList<GetRequest> m_waitQueue;
01193 TQPtrList<GetRequest> m_activeQueue;
01194 bool b_multiGetActive;
01195 GetRequest *m_currentEntry;
01196 protected:
01197 virtual void virtual_hook( int id, void* data );
01198 private:
01199 class MultiGetJobPrivate* d;
01200 };
01201
01208 class TDEIO_EXPORT MimetypeJob : public TransferJob {
01209 Q_OBJECT
01210
01211 public:
01220 MimetypeJob(const KURL& url, int command, const TQByteArray &packedArgs, bool showProgressInfo);
01221
01227 TQString mimetype() const { return m_mimetype; }
01228
01235 virtual void start( Slave *slave );
01236
01237 protected slots:
01238 virtual void slotFinished( );
01239 protected:
01240 virtual void virtual_hook( int id, void* data );
01241 private:
01242 class MimetypeJobPrivate* d;
01243 };
01244
01250 class TDEIO_EXPORT FileCopyJob : public Job {
01251 Q_OBJECT
01252
01253 public:
01265 FileCopyJob( const KURL& src, const KURL& dest, int permissions,
01266 bool move, bool overwrite, bool resume, bool showProgressInfo);
01267
01268 ~FileCopyJob();
01275 void setSourceSize64(TDEIO::filesize_t size);
01276
01284 void setModificationTime( time_t mtime );
01285
01289 void setSourceSize( off_t size ) KDE_DEPRECATED;
01290
01295 KURL srcURL() const { return m_src; }
01296
01301 KURL destURL() const { return m_dest; }
01302
01303 signals:
01313 void mimetype( TDEIO::Job *job, const TQString &type );
01314
01315 public slots:
01316 void slotStart();
01317 void slotData( TDEIO::Job *, const TQByteArray &data);
01318 void slotDataReq( TDEIO::Job *, TQByteArray &data);
01319 void slotMimetype( TDEIO::Job *, const TQString& type );
01320
01321 protected slots:
01326 virtual void slotResult( TDEIO::Job *job );
01327
01333 void slotProcessedSize( TDEIO::Job *job, TDEIO::filesize_t size );
01339 void slotTotalSize( TDEIO::Job *job, TDEIO::filesize_t size );
01345 void slotPercent( TDEIO::Job *job, unsigned long pct );
01351 void slotCanResume( TDEIO::Job *job, TDEIO::filesize_t offset );
01352
01353 protected:
01354 void startCopyJob();
01355 void startCopyJob(const KURL &slave_url);
01356 void startRenameJob(const KURL &slave_url);
01357 void startDataPump();
01358 void connectSubjob( SimpleJob * job );
01359
01360 private:
01361 void startBestCopyMethod();
01362
01363 protected:
01364 KURL m_src;
01365 KURL m_dest;
01366 int m_permissions;
01367 bool m_move:1;
01368 bool m_overwrite:1;
01369 bool m_resume:1;
01370 bool m_canResume:1;
01371 bool m_resumeAnswerSent:1;
01372 TQByteArray m_buffer;
01373 SimpleJob *m_moveJob;
01374 SimpleJob *m_copyJob;
01375 TransferJob *m_getJob;
01376 TransferJob *m_putJob;
01377 TDEIO::filesize_t m_totalSize;
01378 protected:
01379 virtual void virtual_hook( int id, void* data );
01380 private:
01381 class FileCopyJobPrivate;
01382 FileCopyJobPrivate* d;
01383 };
01384
01392 class TDEIO_EXPORT ListJob : public SimpleJob {
01393 Q_OBJECT
01394
01395 public:
01406 ListJob(const KURL& url, bool showProgressInfo,
01407 bool recursive = false, TQString prefix = TQString::null,
01408 bool includeHidden = true);
01409
01416 virtual void start( Slave *slave );
01417
01424 const KURL& redirectionURL() const { return m_redirectionURL; }
01425
01430 void setUnrestricted(bool unrestricted);
01431
01432 signals:
01442 void entries( TDEIO::Job *job, const TDEIO::UDSEntryList& list);
01443
01451 void redirection( TDEIO::Job *job, const KURL &url );
01452
01461 void permanentRedirection( TDEIO::Job *job, const KURL &fromUrl, const KURL &toUrl );
01462
01463 protected slots:
01464 virtual void slotFinished( );
01465 virtual void slotMetaData( const TDEIO::MetaData &_metaData);
01466 virtual void slotResult( TDEIO::Job *job );
01467 void slotListEntries( const TDEIO::UDSEntryList& list );
01468 void slotRedirection( const KURL &url );
01469 void gotEntries( TDEIO::Job * subjob, const TDEIO::UDSEntryList& list );
01470
01471 private:
01472 bool recursive;
01473 bool includeHidden;
01474 TQString prefix;
01475 unsigned long m_processedEntries;
01476 KURL m_redirectionURL;
01477 protected:
01478 virtual void virtual_hook( int id, void* data );
01479 private:
01480 class ListJobPrivate* d;
01481 };
01482
01484 struct TDEIO_EXPORT CopyInfo
01485 {
01486 KURL uSource;
01487 KURL uDest;
01488 TQString linkDest;
01489 int permissions;
01490
01491 time_t ctime;
01492 time_t mtime;
01493 TDEIO::filesize_t size;
01494 };
01495
01508 class TDEIO_EXPORT CopyJob : public Job {
01509 Q_OBJECT
01510
01511 public:
01515 enum CopyMode{ Copy, Move, Link };
01516
01534 CopyJob( const KURL::List& src, const KURL& dest, CopyMode mode, bool asMethod, bool showProgressInfo );
01535
01536 virtual ~CopyJob();
01537
01542 KURL::List srcURLs() const { return m_srcList; }
01543
01548 KURL destURL() const { return m_dest; }
01549
01560 void setDefaultPermissions( bool b );
01561
01573 void setInteractive( bool b );
01574
01575 signals:
01576
01582 void totalFiles( TDEIO::Job *job, unsigned long files );
01588 void totalDirs( TDEIO::Job *job, unsigned long dirs );
01589
01597 void aboutToCreate( TDEIO::Job *job, const TQValueList<TDEIO::CopyInfo> &files);
01598
01604 void processedFiles( TDEIO::Job *job, unsigned long files );
01610 void processedDirs( TDEIO::Job *job, unsigned long dirs );
01611
01619 void copying( TDEIO::Job *job, const KURL& from, const KURL& to );
01627 void linking( TDEIO::Job *job, const TQString& target, const KURL& to );
01635 void moving( TDEIO::Job *job, const KURL& from, const KURL& to );
01641 void creatingDir( TDEIO::Job *job, const KURL& dir );
01648 void renamed( TDEIO::Job *job, const KURL& from, const KURL& to );
01649
01662 void copyingDone( TDEIO::Job *job, const KURL &from, const KURL &to, bool directory, bool renamed );
01672 void copyingLinkDone( TDEIO::Job *job, const KURL &from, const TQString& target, const KURL& to );
01673
01674 protected:
01675 void statCurrentSrc();
01676 void statNextSrc();
01677
01678
01679 void slotResultStating( TDEIO::Job * job );
01680 void startListing( const KURL & src );
01681 void slotResultCreatingDirs( TDEIO::Job * job );
01682 void slotResultConflictCreatingDirs( TDEIO::Job * job );
01683 void createNextDir();
01684 void slotResultCopyingFiles( TDEIO::Job * job );
01685 void slotResultConflictCopyingFiles( TDEIO::Job * job );
01686 void copyNextFile();
01687 void slotResultDeletingDirs( TDEIO::Job * job );
01688 void deleteNextDir();
01689 void skip( const KURL & sourceURL );
01690 void slotResultRenaming( TDEIO::Job * job );
01691
01692 void setNextDirAttribute();
01693 private:
01694 void startRenameJob(const KURL &slave_url);
01695 bool shouldOverwrite( const TQString& path ) const;
01696 bool shouldSkip( const TQString& path ) const;
01697 void skipSrc();
01698
01699 protected slots:
01700 void slotStart();
01701 void slotEntries( TDEIO::Job*, const TDEIO::UDSEntryList& list );
01702 virtual void slotResult( TDEIO::Job *job );
01706 void slotProcessedSize( TDEIO::Job*, TDEIO::filesize_t data_size );
01711 void slotTotalSize( TDEIO::Job*, TDEIO::filesize_t size );
01712
01713 void slotReport();
01714 private:
01715 CopyMode m_mode;
01716 bool m_asMethod;
01717 enum DestinationState { DEST_NOT_STATED, DEST_IS_DIR, DEST_IS_FILE, DEST_DOESNT_EXIST };
01718 DestinationState destinationState;
01719 enum { STATE_STATING, STATE_RENAMING, STATE_LISTING, STATE_CREATING_DIRS,
01720 STATE_CONFLICT_CREATING_DIRS, STATE_COPYING_FILES, STATE_CONFLICT_COPYING_FILES,
01721 STATE_DELETING_DIRS, STATE_SETTING_DIR_ATTRIBUTES } state;
01722 TDEIO::filesize_t m_totalSize;
01723 TDEIO::filesize_t m_processedSize;
01724 TDEIO::filesize_t m_fileProcessedSize;
01725 int m_processedFiles;
01726 int m_processedDirs;
01727 TQValueList<CopyInfo> files;
01728 TQValueList<CopyInfo> dirs;
01729 KURL::List dirsToRemove;
01730 KURL::List m_srcList;
01731 KURL::List::Iterator m_currentStatSrc;
01732 bool m_bCurrentSrcIsDir;
01733 bool m_bCurrentOperationIsLink;
01734 bool m_bSingleFileCopy;
01735 bool m_bOnlyRenames;
01736 KURL m_dest;
01737 KURL m_currentDest;
01738
01739 TQStringList m_skipList;
01740 TQStringList m_overwriteList;
01741 bool m_bAutoSkip;
01742 bool m_bOverwriteAll;
01743 int m_conflictError;
01744
01745 TQTimer *m_reportTimer;
01746
01747 KURL m_currentSrcURL;
01748 KURL m_currentDestURL;
01749 protected:
01750 virtual void virtual_hook( int id, void* data );
01751 private:
01752 class CopyJobPrivate;
01753 CopyJobPrivate* d;
01754 friend class CopyJobPrivate;
01755 };
01756
01763 class TDEIO_EXPORT DeleteJob : public Job {
01764 Q_OBJECT
01765
01766 public:
01776 DeleteJob( const KURL::List& src, bool shred, bool showProgressInfo );
01777
01782 KURL::List urls() const { return m_srcList; }
01783
01784 signals:
01785
01791 void totalFiles( TDEIO::Job *job, unsigned long files );
01797 void totalDirs( TDEIO::Job *job, unsigned long dirs );
01798
01804 void processedFiles( TDEIO::Job *job, unsigned long files );
01810 void processedDirs( TDEIO::Job *job, unsigned long dirs );
01811
01818 void deleting( TDEIO::Job *job, const KURL& file );
01819
01820 protected slots:
01821 void slotStart();
01822 void slotEntries( TDEIO::Job*, const TDEIO::UDSEntryList& list );
01823 virtual void slotResult( TDEIO::Job *job );
01824
01828 void slotProcessedSize( TDEIO::Job*, TDEIO::filesize_t data_size );
01829 void slotReport();
01830
01831 private:
01832 void statNextSrc();
01833 void deleteNextFile();
01834 void deleteNextDir();
01835
01836 private:
01837 enum { STATE_STATING, STATE_LISTING,
01838 STATE_DELETING_FILES, STATE_DELETING_DIRS } state;
01839 TDEIO::filesize_t m_totalSize;
01840 TDEIO::filesize_t m_processedSize;
01841 TDEIO::filesize_t m_fileProcessedSize;
01842 int m_processedFiles;
01843 int m_processedDirs;
01844 int m_totalFilesDirs;
01845 KURL m_currentURL;
01846 KURL::List files;
01847 KURL::List symlinks;
01848 KURL::List dirs;
01849 KURL::List m_srcList;
01850 KURL::List::Iterator m_currentStat;
01851 TQStringList m_parentDirs;
01852 bool m_shred;
01853 TQTimer *m_reportTimer;
01854 protected:
01856 virtual void virtual_hook( int id, void* data );
01857 private:
01858 class DeleteJobPrivate* d;
01859 };
01860
01866 class TDEIO_EXPORT LocalURLJob : public SimpleJob {
01867
01868 Q_OBJECT
01869
01870 public:
01878 LocalURLJob(const KURL& url, int command, const TQByteArray &packedArgs, bool showProgressInfo);
01879
01886 virtual void start( Slave *slave );
01887
01888 signals:
01894 void localURL( TDEIO::LocalURLJob *job, const KURL &url, bool isLocal );
01895
01896 protected slots:
01897 void slotLocalURL( const KURL &url, bool isLocal );
01898 virtual void slotFinished();
01899
01900 protected:
01901 virtual void virtual_hook( int id, void* data );
01902 private:
01903 class LocalURLJobPrivate;
01904 LocalURLJobPrivate *d;
01905 };
01906
01907 }
01908
01909 #endif