21 #ifndef __tdeio_jobclasses_h__
22 #define __tdeio_jobclasses_h__
25 #include <tqptrlist.h>
27 #include <tqstringlist.h>
28 #include <tqguardedptr.h>
30 #include <sys/types.h>
34 #include <tdeio/global.h>
39 #define TDEIO_COPYJOB_HAS_SETINTERACTIVE // new in 3.4. Used by tdeio_trash.
67 class TDEIO_EXPORT
Job :
public TQObject {
71 Job(
bool showProgressInfo );
86 virtual void kill(
bool quietly =
true );
94 int error()
const {
return m_error; }
110 const TQString &
errorText()
const {
return m_errorText; }
129 TQString errorString()
const;
141 TQStringList detailedErrorStrings(
const KURL *reqUrl = 0L,
142 int method = -1)
const;
152 void showErrorDialog( TQWidget * parent = 0L );
167 void setAutoErrorHandlingEnabled(
bool enable, TQWidget *parentWidget = 0 );
174 bool isAutoErrorHandlingEnabled()
const;
189 void setAutoWarningHandlingEnabled(
bool enable );
198 bool isAutoWarningHandlingEnabled()
const;
207 void setInteractive(
bool enable);
215 bool isInteractive()
const;
221 void setWindow(TQWidget *window);
228 TQWidget *window()
const;
235 void updateUserTimestamp(
unsigned long time );
247 void setParentJob(
Job* parentJob );
255 Job* parentJob()
const;
273 void addMetaData(
const TQString &key,
const TQString &value);
282 void addMetaData(
const TQMap<TQString,TQString> &values);
291 void mergeMetaData(
const TQMap<TQString,TQString> &values);
312 TQString queryMetaData(
const TQString &key);
414 void slotSpeed(
TDEIO::Job *job,
unsigned long speed );
421 void slotInfoMessage(
TDEIO::Job *job,
const TQString &msg );
426 void slotSpeedTimeout();
438 virtual void addSubjob(
Job *job,
bool inheritMetaData=
true );
448 virtual void removeSubjob(
Job *job );
457 void removeSubjob(
Job *job,
bool mergeMetaData,
bool emitResultIfLast );
475 void emitSpeed(
unsigned long speed );
492 unsigned long userTimestamp()
const;
499 enum { EF_TransferJobAsync = (1 << 0),
500 EF_TransferJobNeedData = (1 << 1),
501 EF_TransferJobDataSent = (1 << 2),
502 EF_ListJobUnrestricted = (1 << 3) };
505 TQPtrList<Job> subjobs;
507 TQString m_errorText;
508 unsigned long m_percent;
510 TQTimer *m_speedTimer;
511 TQGuardedPtr<TQWidget> m_window;
515 virtual void virtual_hook(
int id,
void* data );
539 SimpleJob(
const KURL& url,
int command,
const TQByteArray &packedArgs,
540 bool showProgressInfo);
548 const KURL&
url()
const {
return m_url; }
557 virtual void kill(
bool quietly =
true );
563 virtual void putOnHold();
568 static void removeOnHold();
575 virtual void start(
Slave *slave );
587 Slave *slave()
const {
return m_slave; }
592 int command()
const {
return m_command; }
607 virtual void slotFinished( );
613 void slotWarning(
const TQString & );
620 void slotInfoMessage(
const TQString &s );
626 void slotConnected();
639 void slotSpeed(
unsigned long speed );
654 virtual void slotError(
int ,
const TQString & );
660 void slotNeedProgressId();
664 TQByteArray m_packedArgs;
670 virtual void virtual_hook(
int id,
void* data );
678 void storeSSLSessionFromJob(
const KURL &m_redirectionURL);
680 class SimpleJobPrivate* d;
699 StatJob(
const KURL& url,
int command,
const TQByteArray &packedArgs,
bool showProgressInfo);
708 void setSide(
bool source ) { m_bSource = source; }
719 void setDetails(
short int details ) { m_details = details; }
734 virtual void start(
Slave *slave );
758 void slotRedirection(
const KURL &url);
759 virtual void slotFinished();
764 KURL m_redirectionURL;
768 virtual void virtual_hook(
int id,
void* data );
770 class StatJobPrivate;
791 MkdirJob(
const KURL& url,
int command,
const TQByteArray &packedArgs,
bool showProgressInfo);
799 virtual void start(
Slave *slave );
821 void slotRedirection(
const KURL &url);
822 virtual void slotFinished();
825 KURL m_redirectionURL;
828 virtual void virtual_hook(
int id,
void* data );
830 class MkdirJobPrivate;
838 class TDEIO_EXPORT DirectCopyJob :
public SimpleJob {
845 DirectCopyJob(
const KURL& url,
int command,
const TQByteArray &packedArgs,
846 bool showProgressInfo);
853 virtual void start(
Slave *slave);
888 const TQByteArray &packedArgs,
889 const TQByteArray &_staticData,
890 bool showProgressInfo);
898 virtual void start(
Slave *slave);
939 void setAsyncDataEnabled(
bool enabled);
947 void sendAsyncData(
const TQByteArray &data);
956 void setReportDataSent(
bool enabled);
964 bool reportDataSent();
1028 virtual void slotRedirection(
const KURL &url);
1029 virtual void slotFinished();
1030 virtual void slotData(
const TQByteArray &data);
1031 virtual void slotDataReq();
1032 virtual void slotMimetype(
const TQString &
mimetype );
1033 virtual void slotNeedSubURLData();
1034 virtual void slotSubURLData(
TDEIO::Job*,
const TQByteArray &);
1036 void slotErrorPage();
1038 void slotPostRedirection();
1043 TQByteArray staticData;
1044 KURL m_redirectionURL;
1045 KURL::List m_redirectionList;
1046 TQString m_mimetype;
1049 virtual void virtual_hook(
int id,
void* data );
1051 class TransferJobPrivate *d;
1088 const TQByteArray &packedArgs,
1089 const TQByteArray &_staticData,
1090 bool showProgressInfo);
1097 void setData(
const TQByteArray& arr );
1103 TQByteArray
data()
const {
return m_data; }
1106 void slotStoredData(
TDEIO::Job *job,
const TQByteArray &data );
1107 void slotStoredDataReq(
TDEIO::Job *job, TQByteArray &data );
1130 MultiGetJob(
const KURL& url,
bool showProgressInfo);
1138 virtual void start(
Slave *slave);
1147 void get(
long id,
const KURL &url,
const MetaData &metaData);
1156 void data(
long id,
const TQByteArray &data);
1175 virtual void slotRedirection(
const KURL &url);
1176 virtual void slotFinished();
1177 virtual void slotData(
const TQByteArray &data);
1178 virtual void slotMimetype(
const TQString &
mimetype );
1182 GetRequest(
long _id,
const KURL &_url,
const MetaData &_metaData)
1183 : id(_id), url(_url), metaData(_metaData) { }
1188 bool findCurrentEntry();
1189 void flushQueue(TQPtrList<GetRequest> &queue);
1191 TQPtrList<GetRequest> m_waitQueue;
1192 TQPtrList<GetRequest> m_activeQueue;
1193 bool b_multiGetActive;
1194 GetRequest *m_currentEntry;
1196 virtual void virtual_hook(
int id,
void* data );
1198 class MultiGetJobPrivate* d;
1219 MimetypeJob(
const KURL& url,
int command,
const TQByteArray &packedArgs,
bool showProgressInfo);
1234 virtual void start(
Slave *slave );
1237 virtual void slotFinished( );
1239 virtual void virtual_hook(
int id,
void* data );
1241 class MimetypeJobPrivate* d;
1264 FileCopyJob(
const KURL& src,
const KURL& dest,
int permissions,
1265 bool move,
bool overwrite,
bool resume,
bool showProgressInfo);
1283 void setModificationTime( time_t mtime );
1288 void setSourceSize( off_t size ) KDE_DEPRECATED;
1316 void slotData(
TDEIO::Job *,
const TQByteArray &data);
1317 void slotDataReq(
TDEIO::Job *, TQByteArray &data);
1318 void slotMimetype(
TDEIO::Job *,
const TQString& type );
1344 void slotPercent(
TDEIO::Job *job,
unsigned long pct );
1353 void startCopyJob();
1354 void startCopyJob(
const KURL &slave_url);
1355 void startRenameJob(
const KURL &slave_url);
1356 void startDataPump();
1360 void startBestCopyMethod();
1370 bool m_resumeAnswerSent:1;
1371 TQByteArray m_buffer;
1378 virtual void virtual_hook(
int id,
void* data );
1380 class FileCopyJobPrivate;
1381 FileCopyJobPrivate* d;
1405 ListJob(
const KURL& url,
bool showProgressInfo,
1406 bool recursive =
false, TQString prefix = TQString::null,
1407 bool includeHidden =
true);
1415 virtual void start(
Slave *slave );
1429 void setUnrestricted(
bool unrestricted);
1463 virtual void slotFinished( );
1466 void slotListEntries(
const TDEIO::UDSEntryList& list );
1467 void slotRedirection(
const KURL &url );
1468 void gotEntries(
TDEIO::Job * subjob,
const TDEIO::UDSEntryList& list );
1474 unsigned long m_processedEntries;
1475 KURL m_redirectionURL;
1477 virtual void virtual_hook(
int id,
void* data );
1479 class ListJobPrivate* d;
1483 struct TDEIO_EXPORT CopyInfo
1533 CopyJob(
const KURL::List& src,
const KURL& dest, CopyMode mode,
bool asMethod,
bool showProgressInfo );
1559 void setDefaultPermissions(
bool b );
1572 void setInteractive(
bool b );
1674 void statCurrentSrc();
1679 void startListing(
const KURL & src );
1680 void slotResultCreatingDirs(
TDEIO::Job * job );
1681 void slotResultConflictCreatingDirs(
TDEIO::Job * job );
1682 void createNextDir();
1683 void slotResultCopyingFiles(
TDEIO::Job * job );
1684 void slotResultConflictCopyingFiles(
TDEIO::Job * job );
1685 void copyNextFile();
1686 void slotResultDeletingDirs(
TDEIO::Job * job );
1687 void deleteNextDir();
1688 void skip(
const KURL & sourceURL );
1691 void setNextDirAttribute();
1693 void startRenameJob(
const KURL &slave_url);
1694 bool shouldOverwrite(
const TQString& path )
const;
1695 bool shouldSkip(
const TQString& path )
const;
1700 void slotEntries(
TDEIO::Job*,
const TDEIO::UDSEntryList& list );
1716 enum DestinationState { DEST_NOT_STATED, DEST_IS_DIR, DEST_IS_FILE, DEST_DOESNT_EXIST };
1717 DestinationState destinationState;
1718 enum { STATE_STATING, STATE_RENAMING, STATE_LISTING, STATE_CREATING_DIRS,
1719 STATE_CONFLICT_CREATING_DIRS, STATE_COPYING_FILES, STATE_CONFLICT_COPYING_FILES,
1720 STATE_DELETING_DIRS, STATE_SETTING_DIR_ATTRIBUTES } state;
1724 int m_processedFiles;
1725 int m_processedDirs;
1726 TQValueList<CopyInfo> files;
1727 TQValueList<CopyInfo> dirs;
1728 KURL::List dirsToRemove;
1729 KURL::List m_srcList;
1730 KURL::List::Iterator m_currentStatSrc;
1731 bool m_bCurrentSrcIsDir;
1732 bool m_bCurrentOperationIsLink;
1733 bool m_bSingleFileCopy;
1734 bool m_bOnlyRenames;
1738 TQStringList m_skipList;
1739 TQStringList m_overwriteList;
1741 bool m_bOverwriteAll;
1742 int m_conflictError;
1744 TQTimer *m_reportTimer;
1746 KURL m_currentSrcURL;
1747 KURL m_currentDestURL;
1749 virtual void virtual_hook(
int id,
void* data );
1751 class CopyJobPrivate;
1753 friend class CopyJobPrivate;
1775 DeleteJob(
const KURL::List& src,
bool shred,
bool showProgressInfo );
1781 KURL::List
urls()
const {
return m_srcList; }
1821 void slotEntries(
TDEIO::Job*,
const TDEIO::UDSEntryList& list );
1832 void deleteNextFile();
1833 void deleteNextDir();
1836 enum { STATE_STATING, STATE_LISTING,
1837 STATE_DELETING_FILES, STATE_DELETING_DIRS } state;
1841 int m_processedFiles;
1842 int m_processedDirs;
1843 int m_totalFilesDirs;
1846 KURL::List symlinks;
1848 KURL::List m_srcList;
1849 KURL::List::Iterator m_currentStat;
1850 TQStringList m_parentDirs;
1852 TQTimer *m_reportTimer;
1855 virtual void virtual_hook(
int id,
void* data );
1857 class DeleteJobPrivate* d;
1877 LocalURLJob(
const KURL& url,
int command,
const TQByteArray &packedArgs,
bool showProgressInfo);
1885 virtual void start(
Slave *slave );
1896 void slotLocalURL(
const KURL &url,
bool isLocal );
1897 virtual void slotFinished();
1900 virtual void virtual_hook(
int id,
void* data );
1902 class LocalURLJobPrivate;
1903 LocalURLJobPrivate *d;
void copyingDone(TDEIO::Job *job, const KURL &from, const KURL &to, bool directory, bool renamed)
void data(long id, const TQByteArray &data)
TQByteArray data() const
Get hold of the downloaded data.
Observer for TDEIO::Job progress information.
CopyJob is used to move, copy or symlink files and directories.
A TDEIO job that finds a local URL.
void infoMessage(TDEIO::Job *job, const TQString &msg)
void copying(TDEIO::Job *job, const KURL &from, const KURL &to)
void deleting(TDEIO::Job *job, const KURL &file)
Sends the URL of the file that is currently being deleted.
void setDetails(short int details)
void linking(TDEIO::Job *job, const TQString &target, const KURL &to)
void creatingDir(TDEIO::Job *job, const KURL &dir)
void processedSize(TDEIO::Job *job, TDEIO::filesize_t size)
void redirection(TDEIO::Job *job, const KURL &url)
CopyMode
Defines the mode of the operation.
KURL destURL() const
Returns the destination URL.
void mimetype(TDEIO::Job *job, const TQString &type)
void totalDirs(TDEIO::Job *job, unsigned long dirs)
Emitted when the toal number of direcotries is known.
void localURL(TDEIO::LocalURLJob *job, const KURL &url, bool isLocal)
void canceled(TDEIO::Job *job)
TQString mimetype() const
TQValueList< UDSAtom > UDSEntry
An entry is the list of atoms containing all the information for a file or URL.
const TQString & errorText() const
Returns the error text if there has been an error.
A ListJob is allows you to get the get the content of a directory.
void warning(TDEIO::Job *job, const TQString &msg)
Emitted to display a warning about this job, as sent by the slave.
void speed(TDEIO::Job *job, unsigned long speed)
TDEIO_EXPORT MimetypeJob * mimetype(const KURL &url, bool showProgressInfo=true)
Find mimetype for one file or directory.
Attention developers: If you change the implementation of TDEIO::Slave, do not use connection() or sl...
int progressId() const
Returns the progress id for this job.
int error() const
Returns the error code, if there has been an error.
KURL::List urls() const
Returns the list of URLs.
KURL srcURL() const
Returns the source URL.
void permanentRedirection(TDEIO::Job *job, const KURL &fromUrl, const KURL &toUrl)
void processedFiles(TDEIO::Job *job, unsigned long files)
Sends the number of processed files.
A namespace for TDEIO globals.
bool isErrorPage() const
Checks whether we got an error page.
The transfer job pumps data into and/or out of a Slave.
The base class for all jobs.
The FileCopyJob copies data from one place to another.
TDEIO_EXPORT CopyJob * move(const KURL &src, const KURL &dest, bool showProgressInfo=true)
Moves a file or directory src to the given destination dest.
void moving(TDEIO::Job *job, const KURL &from, const KURL &to)
void renamed(TDEIO::Job *job, const KURL &from, const KURL &to)
void percent(TDEIO::Job *job, unsigned long percent)
A MimetypeJob is a TransferJob that allows you to get the mime type of an URL.
KURL destURL() const
Returns the destination URL.
void processedDirs(TDEIO::Job *job, unsigned long dirs)
Sends the number of processed directories.
void mimetype(long id, const TQString &type)
TQ_ULLONG filesize_t
64-bit file size
const KURL & url() const
Returns the SimpleJob's URL.
void processedDirs(TDEIO::Job *job, unsigned long dirs)
Sends the number of processed directories.
const KURL & redirectionURL() const
Returns the ListJob's redirection URL.
A TDEIO job that retrieves information about a file or directory.
void result(TDEIO::Job *job)
void mimetype(TDEIO::Job *job, const TQString &type)
Mimetype determined during a file copy.
void dataReq(TDEIO::Job *job, TQByteArray &data)
A more complex Job to delete files and directories.
void permanentRedirection(TDEIO::Job *job, const KURL &fromUrl, const KURL &toUrl)
void data(TDEIO::Job *job, const TQByteArray &data)
Data from the slave has arrived.
void aboutToCreate(TDEIO::Job *job, const TQValueList< TDEIO::CopyInfo > &files)
Emitted when it is known which files / directories are going to be created.
const UDSEntry & statResult() const
StoredTransferJob is a TransferJob (for downloading or uploading data) that also stores a TQByteArray...
A TDEIO job that creates a directory.
void copyingLinkDone(TDEIO::Job *job, const KURL &from, const TQString &target, const KURL &to)
void redirection(TDEIO::Job *job, const KURL &url)
void entries(TDEIO::Job *job, const TDEIO::UDSEntryList &list)
The MultiGetJob is a TransferJob that allows you to get several files from a single server.
void totalDirs(TDEIO::Job *job, unsigned long dirs)
Emitted when the toal number of direcotries is known.
A simple job (one url and one command).
void totalFiles(TDEIO::Job *job, unsigned long files)
Emitted when the total number of files is known.
void permanentRedirection(TDEIO::Job *job, const KURL &fromUrl, const KURL &toUrl)
void setSide(bool source)
A stat() can have two meanings.
void totalFiles(TDEIO::Job *job, unsigned long files)
Emitted when the total number of files is known.
void redirection(TDEIO::Job *job, const KURL &url)
void totalSize(TDEIO::Job *job, TDEIO::filesize_t size)
KURL::List srcURLs() const
Returns the list of source URLs.
void redirection(TDEIO::Job *job, const KURL &url)
void processedFiles(TDEIO::Job *job, unsigned long files)
Sends the number of processed files.
void connected(TDEIO::Job *job)
TDEIO_EXPORT TransferJob * get(const KURL &url, bool reload=false, bool showProgressInfo=true)
Get (a.k.a.
void permanentRedirection(TDEIO::Job *job, const KURL &fromUrl, const KURL &toUrl)