diff options
Diffstat (limited to 'kio/kio/jobclasses.h')
-rw-r--r-- | kio/kio/jobclasses.h | 1909 |
1 files changed, 0 insertions, 1909 deletions
diff --git a/kio/kio/jobclasses.h b/kio/kio/jobclasses.h deleted file mode 100644 index 3438406fa..000000000 --- a/kio/kio/jobclasses.h +++ /dev/null @@ -1,1909 +0,0 @@ -// -*- c++ -*- -/* This file is part of the KDE libraries - Copyright (C) 2000 Stephan Kulow <coolo@kde.org> - David Faure <faure@kde.org> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef __kio_jobclasses_h__ -#define __kio_jobclasses_h__ - -#include <tqobject.h> -#include <tqptrlist.h> -#include <tqstring.h> -#include <tqstringlist.h> -#include <tqguardedptr.h> - -#include <sys/types.h> -#include <sys/stat.h> - -#include <kurl.h> -#include <kio/global.h> - -class Observer; -class TQTimer; - -#define KIO_COPYJOB_HAS_SETINTERACTIVE // new in 3.4. Used by kio_trash. - -namespace TDEIO { - - class Slave; - class SlaveInterface; - - - /** - * The base class for all jobs. - * For all jobs created in an application, the code looks like - * - * \code - * TDEIO::Job * job = TDEIO::someoperation( some parameters ); - * connect( job, TQT_SIGNAL( result( TDEIO::Job * ) ), - * this, TQT_SLOT( slotResult( TDEIO::Job * ) ) ); - * \endcode - * (other connects, specific to the job) - * - * And slotResult is usually at least: - * - * \code - * if ( job->error() ) - * job->showErrorDialog( this or 0L ); - * \endcode - * @see TDEIO::Scheduler - * @see TDEIO::Slave - */ - class TDEIO_EXPORT Job : public TQObject { - Q_OBJECT - - protected: - Job( bool showProgressInfo ); - - public: - virtual ~Job(); - - /** - * Abort this job. - * This kills all subjobs and deletes the job. - * - * @param quietly if false, Job will emit signal result - * and ask kio_uiserver to close the progress window. - * @p quietly is set to true for subjobs. Whether applications - * should call with true or false depends on whether they rely - * on result being emitted or not. - */ - virtual void kill( bool quietly = true ); - - /** - * Returns the error code, if there has been an error. - * Only call this method from the slot connected to result(). - * @return the error code for this job, 0 if no error. - * Error codes are defined in TDEIO::Error. - */ - int error() const { return m_error; } - - /** - * Returns the progress id for this job. - * @return the progress id for this job, as returned by uiserver - */ - int progressId() const { return m_progressId; } - - /** - * Returns the error text if there has been an error. - * Only call if error is not 0. - * This is really internal, better use errorString() or errorDialog(). - * - * @return a string to help understand the error, usually the url - * related to the error. Only valid if error() is not 0. - */ - const TQString & errorText() const { return m_errorText; } - - /** - * Converts an error code and a non-i18n error message into an - * error message in the current language. The low level (non-i18n) - * error message (usually a url) is put into the translated error - * message using %1. - * - * Example for errid == ERR_CANNOT_OPEN_FOR_READING: - * \code - * i18n( "Could not read\n%1" ).arg( errortext ); - * \endcode - * Use this to display the error yourself, but for a dialog box - * use Job::showErrorDialog. Do not call it if error() - * is not 0. - * @return the error message and if there is no error, a message - * telling the user that the app is broken, so check with - * error() whether there is an error - */ - TQString errorString() const; - - /** - * Converts an error code and a non-i18n error message into i18n - * strings suitable for presentation in a detailed error message box. - * - * @param reqUrl the request URL that generated this error message - * @param method the method that generated this error message - * (unimplemented) - * @return the following strings: caption, error + description, - * causes+solutions - */ - TQStringList detailedErrorStrings(const KURL *reqUrl = 0L, - int method = -1) const; - - /** - * Display a dialog box to inform the user of the error given by - * this job. - * Only call if error is not 0, and only in the slot connected - * to result. - * @param parent the parent widget for the dialog box, can be 0 for - * top-level - */ - void showErrorDialog( TQWidget * parent = 0L ); - - /** - * Enable or disable the automatic error handling. When automatic - * error handling is enabled and an error occurs, then showErrorDialog() - * is called with the specified @p parentWidget (if supplied) , right before - * the emission of the result signal. - * - * The default is false. - * - * @param enable enable or disable automatic error handling - * @param parentWidget the parent widget, passed to showErrorDialog. - * Can be 0 for top-level - * @see isAutoErrorHandlingEnabled(), showErrorDialog() - */ - void setAutoErrorHandlingEnabled( bool enable, TQWidget *parentWidget = 0 ); - - /** - * Returns whether automatic error handling is enabled or disabled. - * @return true if automatic error handling is enabled - * @see setAutoErrorHandlingEnabled() - */ - bool isAutoErrorHandlingEnabled() const; - - /** - * Enable or disable the automatic warning handling. When automatic - * warning handling is enabled and an error occurs, then a message box - * is displayed with the warning message - * - * The default is true. - * - * See also isAutoWarningHandlingEnabled , showErrorDialog - * - * @param enable enable or disable automatic warning handling - * @see isAutoWarningHandlingEnabled() - * @since 3.5 - */ - void setAutoWarningHandlingEnabled( bool enable ); - - /** - * Returns whether automatic warning handling is enabled or disabled. - * See also setAutoWarningHandlingEnabled . - * @return true if automatic warning handling is enabled - * @see setAutoWarningHandlingEnabled() - * @since 3.5 - */ - bool isAutoWarningHandlingEnabled() const; - - /** - * Enable or disable the message display from the job. - * - * The default is true. - * @param enable enable or disable message display - * @since 3.4.1 - */ - void setInteractive(bool enable); - - /** - * Returns whether message display is enabled or disabled. - * @return true if message display is enabled - * @see setInteractive() - * @since 3.4.1 - */ - bool isInteractive() const; - /** - * Associate this job with a window given by @p window. - * @param window the window to associate to - * @see window() - */ - void setWindow(TQWidget *window); - - /** - * Returns the window this job is associated with. - * @return the associated window - * @see setWindow() - */ - TQWidget *window() const; - - /** - * Updates the last user action timestamp to the given time. - * See TDEApplication::updateUserTimestamp() . - * @since 3.5.6 - */ - void updateUserTimestamp( unsigned long time ); - - /** - * Set the parent Job. - * One example use of this is when FileCopyJob calls open_RenameDlg, - * it must pass the correct progress ID of the parent CopyJob - * (to hide the progress dialog). - * You can set the parent job only once. By default a job does not - * have a parent job. - * @param parentJob the new parent job - * @since 3.1 - */ - void setParentJob( Job* parentJob ); - - /** - * Returns the parent job, if there is one. - * @return the parent job, or 0 if there is none - * @see setParentJob - * @since 3.1 - */ - Job* parentJob() const; - - /** - * Set meta data to be sent to the slave, replacing existing - * meta data. - * @param metaData the meta data to set - * @see addMetaData() - * @see mergeMetaData() - */ - void setMetaData( const TDEIO::MetaData &metaData); - - /** - * Add key/value pair to the meta data that is sent to the slave. - * @param key the key of the meta data - * @param value the value of the meta data - * @see setMetaData() - * @see mergeMetaData() - */ - void addMetaData(const TQString &key, const TQString &value); - - /** - * Add key/value pairs to the meta data that is sent to the slave. - * If a certain key already existed, it will be overridden. - * @param values the meta data to add - * @see setMetaData() - * @see mergeMetaData() - */ - void addMetaData(const TQMap<TQString,TQString> &values); - - /** - * Add key/value pairs to the meta data that is sent to the slave. - * If a certain key already existed, it will remain unchanged. - * @param values the meta data to merge - * @see setMetaData() - * @see addMetaData() - */ - void mergeMetaData(const TQMap<TQString,TQString> &values); - - /** - * @internal. For the scheduler. Do not use. - */ - MetaData outgoingMetaData() const; - - /** - * Get meta data received from the slave. - * (Valid when first data is received and/or slave is finished) - * @return the job's meta data - */ - MetaData metaData() const; - - /** - * Query meta data received from the slave. - * (Valid when first data is received and/or slave is finished) - * @param key the key of the meta data to retrieve - * @return the value of the meta data, or TQString::null if the - * @p key does not exist - */ - TQString queryMetaData(const TQString &key); - - /** - * Returns the processed size for this job. - * @see processedSize - * @since 3.2 - */ - TDEIO::filesize_t getProcessedSize(); - - signals: - /** - * Emitted when the job is finished, in any case (completed, canceled, - * failed...). Use error to know the result. - * @param job the job that emitted this signal - */ - void result( TDEIO::Job *job ); - - /** - * @deprecated. Don't use ! - * Emitted when the job is canceled. - * Signal result() is emitted as well, and error() is, - * in this case, ERR_USER_CANCELED. - * @param job the job that emitted this signal - */ - void canceled( TDEIO::Job *job ); - - /** - * Emitted to display information about this job, as sent by the slave. - * Examples of message are "Resolving host", "Connecting to host...", etc. - * @param job the job that emitted this signal - * @param msg the info message - */ - void infoMessage( TDEIO::Job *job, const TQString & msg ); - // KDE4: Separate rich-text string from plain-text string, for different widgets. - - /** - * Emitted to display a warning about this job, as sent by the slave. - * @param job the job that emitted this signal - * @param msg the info message - * @since 3.5 - */ - void warning( TDEIO::Job *job, const TQString & msg ); - // KDE4: Separate rich-text string from plain-text string, for different widgets. - - /** - * Emitted when the slave successfully connected to the host. - * There is no guarantee the slave will send this, and this is - * currently unused (in the applications). - * @param job the job that emitted this signal - */ - void connected( TDEIO::Job *job ); - - /** - * Progress signal showing the overall progress of the job - * This is valid for any kind of job, and allows using a - * a progress bar very easily. (see KProgress). - * Note that this signal is not emitted for finished jobs. - * @param job the job that emitted this signal - * @param percent the percentage - */ - void percent( TDEIO::Job *job, unsigned long percent ); - - /** - * Emitted when we know the size of this job (data size for transfers, - * number of entries for listings). - * @param job the job that emitted this signal - * @param size the total size in bytes - */ - void totalSize( TDEIO::Job *job, TDEIO::filesize_t size ); - - /** - * Regularly emitted to show the progress of this job - * (current data size for transfers, entries listed). - * @param job the job that emitted this signal - * @param size the processed size in bytes - */ - void processedSize( TDEIO::Job *job, TDEIO::filesize_t size ); - - /** - * Emitted to display information about the speed of this job. - * @param job the job that emitted this signal - * @param speed the speed in bytes/s - */ - void speed( TDEIO::Job *job, unsigned long speed ); - - protected slots: - /** - * Called whenever a subjob finishes. - * Default implementation checks for errors and propagates - * to parent job, then calls removeSubjob. - * Override if you don't want subjobs errors to be propagated. - * @param job the subjob - * @see result() - */ - virtual void slotResult( TDEIO::Job *job ); - - /** - * Forward signal from subjob. - * @param job the subjob - * @param speed the speed in bytes/s - * @see speed() - */ - void slotSpeed( TDEIO::Job *job, unsigned long speed ); - /** - * Forward signal from subjob. - * @param job the subjob - * @param msg the info message - * @see infoMessage() - */ - void slotInfoMessage( TDEIO::Job *job, const TQString &msg ); - - /** - * Remove speed information. - */ - void slotSpeedTimeout(); - - protected: - /** - * Add a job that has to be finished before a result - * is emitted. This has obviously to be called before - * the finish signal is emitted by the slave. - * - * @param job the subjob to add - * @param inheritMetaData if true, the subjob will - * inherit the meta data from this job. - */ - virtual void addSubjob( Job *job, bool inheritMetaData=true ); - - /** - * Mark a sub job as being done. If it's the last to - * wait on the job will emit a result - jobs with - * two steps might want to override slotResult - * in order to avoid calling this method. - * - * @param job the subjob to add - */ - virtual void removeSubjob( Job *job ); - /** - * Overloaded version of removeSubjob - * @param job the subjob to remove - * @param mergeMetaData if set, the metadata received by the subjob is - * merged into this job. - * @param emitResultIfLast if this was the last subjob, emit result, - * i.e. terminate this job. - */ - void removeSubjob( Job *job, bool mergeMetaData, bool emitResultIfLast ); // KDE4: merge with above, with =true to both - - /** - * Utility function for inherited jobs. - * Emits the percent signal if bigger than m_percent, - * after calculating it from the parameters. - * - * @param processedSize the processed size in bytes - * @param totalSize the total size in bytes - */ - void emitPercent( TDEIO::filesize_t processedSize, TDEIO::filesize_t totalSize ); - - /** - * Utility function for inherited jobs. - * Emits the speed signal and starts the timer for removing that info - * - * @param speed the speed in bytes/s - */ - void emitSpeed( unsigned long speed ); - - /** - * Utility function to emit the result signal, and suicide this job. - * It first tells the observer to hide the progress dialog for this job. - */ - void emitResult(); - - /** - * Set the processed size, does not emit processedSize - * @since 3.2 - */ - void setProcessedSize(TDEIO::filesize_t size); - - /** - * @internal - */ - unsigned long userTimestamp() const; - - /** - * @internal - * Some extra storage space for jobs that don't have their own - * private d pointer. - */ - enum { EF_TransferJobAsync = (1 << 0), - EF_TransferJobNeedData = (1 << 1), - EF_TransferJobDataSent = (1 << 2), - EF_ListJobUnrestricted = (1 << 3) }; - int &extraFlags(); - - TQPtrList<Job> subjobs; - int m_error; - TQString m_errorText; - unsigned long m_percent; - int m_progressId; // for uiserver - TQTimer *m_speedTimer; - TQGuardedPtr<TQWidget> m_window; - MetaData m_outgoingMetaData; - MetaData m_incomingMetaData; - protected: - virtual void virtual_hook( int id, void* data ); - private: - class JobPrivate; - JobPrivate *d; - }; - - /** - * A simple job (one url and one command). - * This is the base class for all jobs that are scheduled. - * Other jobs are high-level jobs (CopyJob, DeleteJob, FileCopyJob...) - * that manage subjobs but aren't scheduled directly. - */ - class TDEIO_EXPORT SimpleJob : public TDEIO::Job { - Q_OBJECT - - public: - /** - * Creates a new simple job. You don't need to use this constructor, - * unless you create a new job that inherits from SimpleJob. - * @param url the url of the job - * @param command the command of the job - * @param packedArgs the arguments - * @param showProgressInfo true to show progress information to the user - */ - SimpleJob(const KURL& url, int command, const TQByteArray &packedArgs, - bool showProgressInfo); - - ~SimpleJob(); - - /** - * Returns the SimpleJob's URL - * @return the url - */ - const KURL& url() const { return m_url; } - - /** - * Abort job. - * This kills all subjobs and deletes the job. - * @param quietly if true, Job will emit signal result - * Should only be set to false when the user kills the job - * (from kio_uiserver), not when you want to abort a job. - */ - virtual void kill( bool quietly = true ); - - /** - * Abort job. - * Suspends slave to be reused by another job for the same request. - */ - virtual void putOnHold(); - - /** - * Discard suspended slave. - */ - static void removeOnHold(); - - /** - * @internal - * Called by the scheduler when a slave gets to - * work on this job. - **/ - virtual void start( Slave *slave ); - - /** - * @internal - * Called to detach a slave from a job. - **/ - void slaveDone(); - - /** - * @internal - * Slave in use by this job. - */ - Slave *slave() const { return m_slave; } - - /** - * @internal - */ - int command() const { return m_command; } - - public slots: - /** - * Forward signal from the slave - * Can also be called by the parent job, when it knows the size. - * @param data_size the total size - */ - void slotTotalSize( TDEIO::filesize_t data_size ); - - protected slots: - /** - * Called when the slave marks the job - * as finished. - */ - virtual void slotFinished( ); - - /** - * @internal - * Called on a slave's warning. - */ - void slotWarning( const TQString & ); // KDE4: make virtual - - /** - * Called on a slave's info message. - * @param s the info message - * @see infoMessage() - */ - void slotInfoMessage( const TQString &s ); // KDE4: make virtual - - /** - * Called on a slave's connected signal. - * @see connected() - */ - void slotConnected(); - - /** - * Forward signal from the slave. - * @param data_size the processed size in bytes - * @see processedSize() - */ - void slotProcessedSize( TDEIO::filesize_t data_size ); - /** - * Forward signal from the slave. - * @param speed the speed in bytes/s - * @see speed() - */ - void slotSpeed( unsigned long speed ); - - /** - * MetaData from the slave is received. - * @param _metaData the meta data - * @see metaData() - */ - virtual void slotMetaData( const TDEIO::MetaData &_metaData); - - public slots: - /** - * @internal - * Called on a slave's error. - * Made public for the scheduler. - */ - virtual void slotError( int , const TQString & ); - - protected slots: - /** - * @internal - */ - void slotNeedProgressId(); - - protected: - Slave * m_slave; - TQByteArray m_packedArgs; - KURL m_url; - KURL m_subUrl; - int m_command; - TDEIO::filesize_t m_totalSize; - protected: - virtual void virtual_hook( int id, void* data ); - /* - * Allow jobs that inherit SimpleJob and are aware - * of redirections to store the SSL session used. - * Retrieval is handled by SimpleJob::start - * @param m_redirectionURL Reference to redirection URL, - * used instead of m_url if not empty - */ - void storeSSLSessionFromJob(const KURL &m_redirectionURL); - private: - class SimpleJobPrivate* d; - }; - - /** - * A KIO job that retrieves information about a file or directory. - * @see TDEIO::stat() - */ - class TDEIO_EXPORT StatJob : public SimpleJob { - - Q_OBJECT - - public: - /** - * Do not use this constructor to create a StatJob, use TDEIO::stat() instead. - * @param url the url of the file or directory to check - * @param command the command to issue - * @param packedArgs the arguments - * @param showProgressInfo true to show progress information to the user - */ - StatJob(const KURL& url, int command, const TQByteArray &packedArgs, bool showProgressInfo); - - /** - * A stat() can have two meanings. Either we want to read from this URL, - * or to check if we can write to it. First case is "source", second is "dest". - * It is necessary to know what the StatJob is for, to tune the kioslave's behavior - * (e.g. with FTP). - * @param source true for "source" mode, false for "dest" mode - */ - void setSide( bool source ) { m_bSource = source; } - - /** - * Selects the level of @p details we want. - * By default this is 2 (all details wanted, including modification time, size, etc.), - * setDetails(1) is used when deleting: we don't need all the information if it takes - * too much time, no need to follow symlinks etc. - * setDetails(0) is used for very simple probing: we'll only get the answer - * "it's a file or a directory, or it doesn't exist". This is used by KRun. - * @param details 2 for all details, 1 for simple, 0 for very simple - */ - void setDetails( short int details ) { m_details = details; } - - /** - * Call this in the slot connected to result, - * and only after making sure no error happened. - * @return the result of the stat - */ - const UDSEntry & statResult() const { return m_statResult; } - - /** - * @internal - * Called by the scheduler when a @p slave gets to - * work on this job. - * @param slave the slave that starts working on this job - */ - virtual void start( Slave *slave ); - - signals: - /** - * Signals a redirection. - * Use to update the URL shown to the user. - * The redirection itself is handled internally. - * @param job the job that is redirected - * @param url the new url - */ - void redirection( TDEIO::Job *job, const KURL &url ); - - /** - * Signals a permanent redirection. - * The redirection itself is handled internally. - * @param job the job that is redirected - * @param fromUrl the original URL - * @param toUrl the new URL - * @since 3.1 - */ - void permanentRedirection( TDEIO::Job *job, const KURL &fromUrl, const KURL &toUrl ); - - protected slots: - void slotStatEntry( const TDEIO::UDSEntry & entry ); - void slotRedirection( const KURL &url); - virtual void slotFinished(); - virtual void slotMetaData( const TDEIO::MetaData &_metaData); - - protected: - UDSEntry m_statResult; - KURL m_redirectionURL; - bool m_bSource; - short int m_details; - protected: - virtual void virtual_hook( int id, void* data ); - private: - class StatJobPrivate; - StatJobPrivate *d; - }; - - /** - * A KIO job that creates a directory - * @see TDEIO::mkdir() - * @since 3.3 - */ - class TDEIO_EXPORT MkdirJob : public SimpleJob { - - Q_OBJECT - - public: - /** - * Do not use this constructor to create a MkdirJob, use TDEIO::mkdir() instead. - * @param url the url of the file or directory to check - * @param command the command to issue - * @param packedArgs the arguments - * @param showProgressInfo true to show progress information to the user - */ - MkdirJob(const KURL& url, int command, const TQByteArray &packedArgs, bool showProgressInfo); - - /** - * @internal - * Called by the scheduler when a @p slave gets to - * work on this job. - * @param slave the slave that starts working on this job - */ - virtual void start( Slave *slave ); - - signals: - /** - * Signals a redirection. - * Use to update the URL shown to the user. - * The redirection itself is handled internally. - * @param job the job that is redirected - * @param url the new url - */ - void redirection( TDEIO::Job *job, const KURL &url ); - - /** - * Signals a permanent redirection. - * The redirection itself is handled internally. - * @param job the job that is redirected - * @param fromUrl the original URL - * @param toUrl the new URL - */ - void permanentRedirection( TDEIO::Job *job, const KURL &fromUrl, const KURL &toUrl ); - - protected slots: - void slotRedirection( const KURL &url); - virtual void slotFinished(); - - protected: - KURL m_redirectionURL; - - protected: - virtual void virtual_hook( int id, void* data ); - private: - class MkdirJobPrivate; - MkdirJobPrivate *d; - }; - - /** - * @internal - * Used for direct copy from or to the local filesystem (i.e. SlaveBase::copy()) - */ - class TDEIO_EXPORT DirectCopyJob : public SimpleJob { - Q_OBJECT - - public: - /** - * Do not create a DirectCopyJob. Use TDEIO::copy() or TDEIO::file_copy() instead. - */ - DirectCopyJob(const KURL& url, int command, const TQByteArray &packedArgs, - bool showProgressInfo); - /** - * @internal - * Called by the scheduler when a @p slave gets to - * work on this job. - * @param slave the slave that starts working on this job - */ - virtual void start(Slave *slave); - - signals: - /** - * @internal - * Emitted if the job found an existing partial file - * and supports resuming. Used by FileCopyJob. - */ - void canResume( TDEIO::Job *job, TDEIO::filesize_t offset ); - - private slots: - void slotCanResume( TDEIO::filesize_t offset ); - }; - - - /** - * The transfer job pumps data into and/or out of a Slave. - * Data is sent to the slave on request of the slave ( dataReq). - * If data coming from the slave can not be handled, the - * reading of data from the slave should be suspended. - */ - class TDEIO_EXPORT TransferJob : public SimpleJob { - Q_OBJECT - - public: - /** - * Do not create a TransferJob. Use TDEIO::get() or TDEIO::put() - * instead. - * @param url the url to get or put - * @param command the command to issue - * @param packedArgs the arguments - * @param _staticData additional data to transmit (e.g. in a HTTP Post) - * @param showProgressInfo true to show progress information to the user - */ - TransferJob(const KURL& url, int command, - const TQByteArray &packedArgs, - const TQByteArray &_staticData, - bool showProgressInfo); - - /** - * @internal - * Called by the scheduler when a @p slave gets to - * work on this job. - * @param slave the slave that starts working on this job - */ - virtual void start(Slave *slave); - - /** - * Called when m_subJob finishes. - * @param job the job that finished - */ - virtual void slotResult( TDEIO::Job *job ); - - /** - * Flow control. Suspend data processing from the slave. - */ - void suspend(); - - /** - * Flow control. Resume data processing from the slave. - */ - void resume(); - - /** - * Flow control. - * @return true if the job is suspended - */ - bool isSuspended() const { return m_suspended; } - - - /** - * Checks whether we got an error page. This currently only happens - * with HTTP urls. Call this from your slot connected to result(). - * - * @return true if we got an (HTML) error page from the server - * instead of what we asked for. - */ - bool isErrorPage() const { return m_errorPage; } - - /** - * Enable the async data mode. - * When async data is enabled, data should be provided to the job by - * calling sendAsyncData() instead of returning data in the - * dataReq() signal. - * @since 3.2 - */ - void setAsyncDataEnabled(bool enabled); - - /** - * Provide data to the job when async data is enabled. - * Should be called exactly once after receiving a dataReq signal - * Sending an empty block indicates end of data. - * @since 3.2 - */ - void sendAsyncData(const TQByteArray &data); - - /** - * When enabled, the job reports the amount of data that has been sent, - * instead of the amount of data that that has been received. - * @see slotProcessedSize - * @see slotSpeed - * @since 3.2 - */ - void setReportDataSent(bool enabled); - - /** - * Returns whether the job reports the amount of data that has been - * sent (true), or whether the job reports the amount of data that - * has been received (false) - * @since 3.2 - */ - bool reportDataSent(); - - signals: - /** - * Data from the slave has arrived. - * @param job the job that emitted this signal - * @param data data received from the slave. - * - * End of data (EOD) has been reached if data.size() == 0, however, you - * should not be certain of data.size() == 0 ever happening (e.g. in case - * of an error), so you should rely on result() instead. - */ - void data( TDEIO::Job *job, const TQByteArray &data ); - - /** - * Request for data. - * Please note, that you shouldn't put too large chunks - * of data in it as this requires copies within the frame - * work, so you should rather split the data you want - * to pass here in reasonable chunks (about 1MB maximum) - * - * @param job the job that emitted this signal - * @param data buffer to fill with data to send to the - * slave. An empty buffer indicates end of data. (EOD) - */ - void dataReq( TDEIO::Job *job, TQByteArray &data ); - - /** - * Signals a redirection. - * Use to update the URL shown to the user. - * The redirection itself is handled internally. - * @param job the job that emitted this signal - * @param url the new URL - */ - void redirection( TDEIO::Job *job, const KURL &url ); - - /** - * Signals a permanent redirection. - * The redirection itself is handled internally. - * @param job the job that emitted this signal - * @param fromUrl the original URL - * @param toUrl the new URL - * @since 3.1 - */ - void permanentRedirection( TDEIO::Job *job, const KURL &fromUrl, const KURL &toUrl ); - - /** - * Mimetype determined. - * @param job the job that emitted this signal - * @param type the mime type - */ - void mimetype( TDEIO::Job *job, const TQString &type ); - - /** - * @internal - * Emitted if the "put" job found an existing partial file - * (in which case offset is the size of that file) - * and emitted by the "get" job if it supports resuming to - * the given offset - in this case @p offset is unused) - */ - void canResume( TDEIO::Job *job, TDEIO::filesize_t offset ); - - - protected slots: - virtual void slotRedirection( const KURL &url); - virtual void slotFinished(); - virtual void slotData( const TQByteArray &data); - virtual void slotDataReq(); - virtual void slotMimetype( const TQString &mimetype ); - virtual void slotNeedSubURLData(); - virtual void slotSubURLData(TDEIO::Job*, const TQByteArray &); - virtual void slotMetaData( const TDEIO::MetaData &_metaData); - void slotErrorPage(); - void slotCanResume( TDEIO::filesize_t offset ); - void slotPostRedirection(); - - protected: - bool m_suspended; - bool m_errorPage; - TQByteArray staticData; - KURL m_redirectionURL; - KURL::List m_redirectionList; - TQString m_mimetype; - TransferJob *m_subJob; - protected: - virtual void virtual_hook( int id, void* data ); - private: - class TransferJobPrivate *d; - }; - - /** - * StoredTransferJob is a TransferJob (for downloading or uploading data) that - * also stores a TQByteArray with the data, making it simpler to use than the - * standard TransferJob. - * - * For TDEIO::storedGet it puts the data into the member TQByteArray, so the user - * of this class can get hold of the whole data at once by calling data() - * when the result signal is emitted. - * You should only use StoredTransferJob to download data if you cannot - * process the data by chunks while it's being downloaded, since storing - * everything in a TQByteArray can potentially require a lot of memory. - * - * For TDEIO::storedPut the user of this class simply provides the bytearray from - * the start, and the job takes care of uploading it. - * You should only use StoredTransferJob to upload data if you cannot - * provide the in chunks while it's being uploaded, since storing - * everything in a TQByteArray can potentially require a lot of memory. - * - * @since 3.3 - */ - class TDEIO_EXPORT StoredTransferJob : public TDEIO::TransferJob { - Q_OBJECT - - public: - /** - * Do not create a StoredTransferJob. Use storedGet() or storedPut() - * instead. - * @param url the url to get or put - * @param command the command to issue - * @param packedArgs the arguments - * @param _staticData additional data to transmit (e.g. in a HTTP Post) - * @param showProgressInfo true to show progress information to the user - */ - StoredTransferJob(const KURL& url, int command, - const TQByteArray &packedArgs, - const TQByteArray &_staticData, - bool showProgressInfo); - - /** - * Set data to be uploaded. This is for put jobs. - * Automatically called by TDEIO::storedPut(const TQByteArray &, ...), - * do not call this yourself. - */ - void setData( const TQByteArray& arr ); - - /** - * Get hold of the downloaded data. This is for get jobs. - * You're supposed to call this only from the slot connected to the result() signal. - */ - TQByteArray data() const { return m_data; } - - private slots: - void slotStoredData( TDEIO::Job *job, const TQByteArray &data ); - void slotStoredDataReq( TDEIO::Job *job, TQByteArray &data ); - private: - TQByteArray m_data; - int m_uploadOffset; - }; - - /** - * The MultiGetJob is a TransferJob that allows you to get - * several files from a single server. Don't create directly, - * but use TDEIO::multi_get() instead. - * @see TDEIO::multi_get() - */ - class TDEIO_EXPORT MultiGetJob : public TransferJob { - Q_OBJECT - - public: - /** - * Do not create a MultiGetJob directly, use TDEIO::multi_get() - * instead. - * - * @param url the first url to get - * @param showProgressInfo true to show progress information to the user - */ - MultiGetJob(const KURL& url, bool showProgressInfo); - - /** - * @internal - * Called by the scheduler when a @p slave gets to - * work on this job. - * @param slave the slave that starts working on this job - */ - virtual void start(Slave *slave); - - /** - * Get an additional file. - * - * @param id the id of the file - * @param url the url of the file to get - * @param metaData the meta data for this request - */ - void get(long id, const KURL &url, const MetaData &metaData); - - signals: - /** - * Data from the slave has arrived. - * @param id the id of the request - * @param data data received from the slave. - * End of data (EOD) has been reached if data.size() == 0 - */ - void data( long id, const TQByteArray &data); - - /** - * Mimetype determined - * @param id the id of the request - * @param type the mime type - */ - void mimetype( long id, const TQString &type ); - - /** - * File transfer completed. - * - * When all files have been processed, result(TDEIO::Job *) gets - * emitted. - * @param id the id of the request - */ - void result( long id); - - protected slots: - virtual void slotRedirection( const KURL &url); - virtual void slotFinished(); - virtual void slotData( const TQByteArray &data); - virtual void slotMimetype( const TQString &mimetype ); - private: - struct GetRequest { - public: - GetRequest(long _id, const KURL &_url, const MetaData &_metaData) - : id(_id), url(_url), metaData(_metaData) { } - long id; - KURL url; - MetaData metaData; - }; - bool findCurrentEntry(); - void flushQueue(TQPtrList<GetRequest> &queue); - - TQPtrList<GetRequest> m_waitQueue; - TQPtrList<GetRequest> m_activeQueue; - bool b_multiGetActive; - GetRequest *m_currentEntry; - protected: - virtual void virtual_hook( int id, void* data ); - private: - class MultiGetJobPrivate* d; - }; - - /** - * A MimetypeJob is a TransferJob that allows you to get - * the mime type of an URL. Don't create directly, - * but use TDEIO::mimetype() instead. - * @see TDEIO::mimetype() - */ - class TDEIO_EXPORT MimetypeJob : public TransferJob { - Q_OBJECT - - public: - /** - * Do not create a MimetypeJob directly. Use TDEIO::mimetype() - * instead. - * @param url the url to get - * @param command the command to issue - * @param packedArgs the arguments - * @param showProgressInfo true to show progress information to the user - */ - MimetypeJob(const KURL& url, int command, const TQByteArray &packedArgs, bool showProgressInfo); - - /** - * Call this in the slot connected to result, - * and only after making sure no error happened. - * @return the mimetype of the URL - */ - TQString mimetype() const { return m_mimetype; } - - /** - * @internal - * Called by the scheduler when a slave gets to - * work on this job. - * @param slave the slave that works on the job - */ - virtual void start( Slave *slave ); - - protected slots: - virtual void slotFinished( ); - protected: - virtual void virtual_hook( int id, void* data ); - private: - class MimetypeJobPrivate* d; - }; - - /** - * The FileCopyJob copies data from one place to another. - * @see TDEIO::file_copy() - * @see TDEIO::file_move() - */ - class TDEIO_EXPORT FileCopyJob : public Job { - Q_OBJECT - - public: - /** - * Do not create a FileCopyJob directly. Use TDEIO::file_move() - * or TDEIO::file_copy() instead. - * @param src the source URL - * @param dest the destination URL - * @param permissions the permissions of the resulting resource - * @param move true to move, false to copy - * @param overwrite true to allow overwriting, false otherwise - * @param resume true to resume an operation, false otherwise - * @param showProgressInfo true to show progress information to the user - */ - FileCopyJob( const KURL& src, const KURL& dest, int permissions, - bool move, bool overwrite, bool resume, bool showProgressInfo); - - ~FileCopyJob(); - /** - * If you know the size of the source file, call this method - * to inform this job. It will be displayed in the "resume" dialog. - * @param size the size of the source file - * @since 3.2 - */ - void setSourceSize64(TDEIO::filesize_t size); - - /** - * Sets the modification time of the file - * - * Note that this is ignored if a direct copy (SlaveBase::copy) can be done, - * in which case the mtime of the source is applied to the destination (if the protocol - * supports the concept). - */ - void setModificationTime( time_t mtime ); - - /** - * @deprecated - */ - void setSourceSize( off_t size ) KDE_DEPRECATED; - - /** - * Returns the source URL. - * @return the source URL - */ - KURL srcURL() const { return m_src; } - - /** - * Returns the destination URL. - * @return the destination URL - */ - KURL destURL() const { return m_dest; } - - signals: - /** - * Mimetype determined during a file copy. - * This is never emitted during a move, and might not be emitted during - * a copy, depending on the slave. - * @param job the job that emitted this signal - * @param type the mime type - * - * @since 3.5.7 - */ - void mimetype( TDEIO::Job *job, const TQString &type ); - - public slots: - void slotStart(); - void slotData( TDEIO::Job *, const TQByteArray &data); - void slotDataReq( TDEIO::Job *, TQByteArray &data); - void slotMimetype( TDEIO::Job *, const TQString& type ); - - protected slots: - /** - * Called whenever a subjob finishes. - * @param job the job that emitted this signal - */ - virtual void slotResult( TDEIO::Job *job ); - - /** - * Forward signal from subjob - * @param job the job that emitted this signal - * @param size the processed size in bytes - */ - void slotProcessedSize( TDEIO::Job *job, TDEIO::filesize_t size ); - /** - * Forward signal from subjob - * @param job the job that emitted this signal - * @param size the total size - */ - void slotTotalSize( TDEIO::Job *job, TDEIO::filesize_t size ); - /** - * Forward signal from subjob - * @param job the job that emitted this signal - * @param pct the percentage - */ - void slotPercent( TDEIO::Job *job, unsigned long pct ); - /** - * Forward signal from subjob - * @param job the job that emitted this signal - * @param offset the offset to resume from - */ - void slotCanResume( TDEIO::Job *job, TDEIO::filesize_t offset ); - - protected: - void startCopyJob(); - void startCopyJob(const KURL &slave_url); - void startRenameJob(const KURL &slave_url); - void startDataPump(); - void connectSubjob( SimpleJob * job ); - - private: - void startBestCopyMethod(); - - protected: - KURL m_src; - KURL m_dest; - int m_permissions; - bool m_move:1; - bool m_overwrite:1; - bool m_resume:1; - bool m_canResume:1; - bool m_resumeAnswerSent:1; - TQByteArray m_buffer; - SimpleJob *m_moveJob; - SimpleJob *m_copyJob; - TransferJob *m_getJob; - TransferJob *m_putJob; - TDEIO::filesize_t m_totalSize; - protected: - virtual void virtual_hook( int id, void* data ); - private: - class FileCopyJobPrivate; - FileCopyJobPrivate* d; - }; - - /** - * A ListJob is allows you to get the get the content of a directory. - * Don't create the job directly, but use TDEIO::listRecursive() or - * TDEIO::listDir() instead. - * @see TDEIO::listRecursive() - * @see TDEIO::listDir() - */ - class TDEIO_EXPORT ListJob : public SimpleJob { - Q_OBJECT - - public: - /** - * Do not create a ListJob directly. Use TDEIO::listDir() or - * TDEIO::listRecursive() instead. - * @param url the url of the directory - * @param showProgressInfo true to show progress information to the user - * @param recursive true to get the data recursively from child directories, - * false to get only the content of the specified dir - * @param prefix the prefix of the files, or TQString::null for no prefix - * @param includeHidden true to include hidden files (those starting with '.') - */ - ListJob(const KURL& url, bool showProgressInfo, - bool recursive = false, TQString prefix = TQString::null, - bool includeHidden = true); - - /** - * @internal - * Called by the scheduler when a @p slave gets to - * work on this job. - * @param slave the slave that starts working on this job - */ - virtual void start( Slave *slave ); - - /** - * Returns the ListJob's redirection URL. This will be invalid if there - * was no redirection. - * @return the redirection url - * @since 3.4.1 - */ - const KURL& redirectionURL() const { return m_redirectionURL; } - - /** - * Do not apply any KIOSK restrictions to this job. - * @since 3.2 - */ - void setUnrestricted(bool unrestricted); - - signals: - /** - * This signal emits the entry found by the job while listing. - * The progress signals aren't specific to ListJob. It simply - * uses SimpleJob's processedSize (number of entries listed) and - * totalSize (total number of entries, if known), - * as well as percent. - * @param job the job that emitted this signal - * @param list the list of UDSEntries - */ - void entries( TDEIO::Job *job, const TDEIO::UDSEntryList& list); - - /** - * Signals a redirection. - * Use to update the URL shown to the user. - * The redirection itself is handled internally. - * @param job the job that is redirected - * @param url the new url - */ - void redirection( TDEIO::Job *job, const KURL &url ); - - /** - * Signals a permanent redirection. - * The redirection itself is handled internally. - * @param job the job that emitted this signal - * @param fromUrl the original URL - * @param toUrl the new URL - * @since 3.1 - */ - void permanentRedirection( TDEIO::Job *job, const KURL &fromUrl, const KURL &toUrl ); - - protected slots: - virtual void slotFinished( ); - virtual void slotMetaData( const TDEIO::MetaData &_metaData); - virtual void slotResult( TDEIO::Job *job ); - void slotListEntries( const TDEIO::UDSEntryList& list ); - void slotRedirection( const KURL &url ); - void gotEntries( TDEIO::Job * subjob, const TDEIO::UDSEntryList& list ); - - private: - bool recursive; - bool includeHidden; - TQString prefix; - unsigned long m_processedEntries; - KURL m_redirectionURL; - protected: - virtual void virtual_hook( int id, void* data ); - private: - class ListJobPrivate* d; - }; - - /// @internal - struct TDEIO_EXPORT CopyInfo - { - KURL uSource; - KURL uDest; - TQString linkDest; // for symlinks only - int permissions; - //mode_t type; - time_t ctime; - time_t mtime; - TDEIO::filesize_t size; // 0 for dirs - }; - - /** - * CopyJob is used to move, copy or symlink files and directories. - * Don't create the job directly, but use TDEIO::copy(), - * TDEIO::move(), TDEIO::link() and friends. - * - * @see TDEIO::copy() - * @see TDEIO::copyAs() - * @see TDEIO::move() - * @see TDEIO::moveAs() - * @see TDEIO::link() - * @see TDEIO::linkAs() - */ - class TDEIO_EXPORT CopyJob : public Job { - Q_OBJECT - - public: - /** - * Defines the mode of the operation - */ - enum CopyMode{ Copy, Move, Link }; - - /** - * Do not create a CopyJob directly. Use TDEIO::copy(), - * TDEIO::move(), TDEIO::link() and friends instead. - * - * @param src the list of source URLs - * @param dest the destination URL - * @param mode specifies whether the job should copy, move or link - * @param asMethod if true, behaves like TDEIO::copyAs(), - * TDEIO::moveAs() or TDEIO::linkAs() - * @param showProgressInfo true to show progress information to the user - * @see TDEIO::copy() - * @see TDEIO::copyAs() - * @see TDEIO::move() - * @see TDEIO::moveAs() - * @see TDEIO::link() - * @see TDEIO::linkAs() - */ - CopyJob( const KURL::List& src, const KURL& dest, CopyMode mode, bool asMethod, bool showProgressInfo ); - - virtual ~CopyJob(); - - /** - * Returns the list of source URLs. - * @return the list of source URLs. - */ - KURL::List srcURLs() const { return m_srcList; } - - /** - * Returns the destination URL. - * @return the destination URL - */ - KURL destURL() const { return m_dest; } - - /** - * By default the permissions of the copied files will be those of the source files. - * - * But when copying "template" files to "new" files, people prefer the umask - * to apply, rather than the template's permissions. - * For that case, call setDefaultPermissions(true) - * - * TODO KDE4: consider adding this as bool to copy/copyAs? - * @since 3.2.3 - */ - void setDefaultPermissions( bool b ); - - /** - * When an error happens while copying/moving a file, the user will be presented with - * a dialog for skipping the file that can't be copied/moved. - * Or if the error is that the destination file already exists, the standard - * rename dialog is shown. - * If the program doesn't want CopyJob to show dialogs, but to simply fail on error, - * call setInteractive( false ). - * - * KDE4: remove, already in Job - * @since 3.4 - */ - void setInteractive( bool b ); - - signals: - - /** - * Emitted when the total number of files is known. - * @param job the job that emitted this signal - * @param files the total number of files - */ - void totalFiles( TDEIO::Job *job, unsigned long files ); - /** - * Emitted when the toal number of direcotries is known. - * @param job the job that emitted this signal - * @param dirs the total number of directories - */ - void totalDirs( TDEIO::Job *job, unsigned long dirs ); - - /** - * Emitted when it is known which files / directories are going - * to be created. Note that this may still change e.g. when - * existing files with the same name are discovered. - * @param job the job that emitted this signal - * @param files a list of items that are about to be created. - */ - void aboutToCreate( TDEIO::Job *job, const TQValueList<TDEIO::CopyInfo> &files); - - /** - * Sends the number of processed files. - * @param job the job that emitted this signal - * @param files the number of processed files - */ - void processedFiles( TDEIO::Job *job, unsigned long files ); - /** - * Sends the number of processed directories. - * @param job the job that emitted this signal - * @param dirs the number of processed dirs - */ - void processedDirs( TDEIO::Job *job, unsigned long dirs ); - - /** - * The job is copying a file or directory. - * @param job the job that emitted this signal - * @param from the URl of the file or directory that is currently - * being copied - * @param to the destination of the current operation - */ - void copying( TDEIO::Job *job, const KURL& from, const KURL& to ); - /** - * The job is creating a symbolic link. - * @param job the job that emitted this signal - * @param target the URl of the file or directory that is currently - * being linked - * @param to the destination of the current operation - */ - void linking( TDEIO::Job *job, const TQString& target, const KURL& to ); - /** - * The job is moving a file or directory. - * @param job the job that emitted this signal - * @param from the URl of the file or directory that is currently - * being moved - * @param to the destination of the current operation - */ - void moving( TDEIO::Job *job, const KURL& from, const KURL& to ); - /** - * The job is creating the directory @p dir. - * @param job the job that emitted this signal - * @param dir the directory that is currently being created - */ - void creatingDir( TDEIO::Job *job, const KURL& dir ); - /** - * The user chose to rename @p from to @p to. - * @param job the job that emitted this signal - * @param from the original name - * @param to the new name - */ - void renamed( TDEIO::Job *job, const KURL& from, const KURL& to ); - - /** - * The job emits this signal when copying or moving a file or directory successfully finished. - * This signal is mainly for the Undo feature. - * - * @param job the job that emitted this signal - * @param from the source URL - * @param to the destination URL - * @param directory indicates whether a file or directory was successfully copied/moved. - * true for a directoy, false for file - * @param renamed indicates that the destination URL was created using a - * rename operation (i.e. fast directory moving). true if is has been renamed - */ - void copyingDone( TDEIO::Job *job, const KURL &from, const KURL &to, bool directory, bool renamed ); - /** - * The job is copying or moving a symbolic link, that points to target. - * The new link is created in @p to. The existing one is/was in @p from. - * This signal is mainly for the Undo feature. - * @param job the job that emitted this signal - * @param from the source URL - * @param target the target - * @param to the destination URL - */ - void copyingLinkDone( TDEIO::Job *job, const KURL &from, const TQString& target, const KURL& to ); - - protected: - void statCurrentSrc(); - void statNextSrc(); - - // Those aren't slots but submethods for slotResult. - void slotResultStating( TDEIO::Job * job ); - void startListing( const KURL & src ); - void slotResultCreatingDirs( TDEIO::Job * job ); - void slotResultConflictCreatingDirs( TDEIO::Job * job ); - void createNextDir(); - void slotResultCopyingFiles( TDEIO::Job * job ); - void slotResultConflictCopyingFiles( TDEIO::Job * job ); - void copyNextFile(); - void slotResultDeletingDirs( TDEIO::Job * job ); - void deleteNextDir(); - void skip( const KURL & sourceURL ); - void slotResultRenaming( TDEIO::Job * job ); - //void slotResultSettingDirAttributes( TDEIO::Job * job ); - void setNextDirAttribute(); - private: - void startRenameJob(const KURL &slave_url); - bool shouldOverwrite( const TQString& path ) const; - bool shouldSkip( const TQString& path ) const; - void skipSrc(); - - protected slots: - void slotStart(); - void slotEntries( TDEIO::Job*, const TDEIO::UDSEntryList& list ); - virtual void slotResult( TDEIO::Job *job ); - /** - * Forward signal from subjob - */ - void slotProcessedSize( TDEIO::Job*, TDEIO::filesize_t data_size ); - /** - * Forward signal from subjob - * @param size the total size - */ - void slotTotalSize( TDEIO::Job*, TDEIO::filesize_t size ); - - void slotReport(); - private: - CopyMode m_mode; - bool m_asMethod; - enum DestinationState { DEST_NOT_STATED, DEST_IS_DIR, DEST_IS_FILE, DEST_DOESNT_EXIST }; - DestinationState destinationState; - enum { STATE_STATING, STATE_RENAMING, STATE_LISTING, STATE_CREATING_DIRS, - STATE_CONFLICT_CREATING_DIRS, STATE_COPYING_FILES, STATE_CONFLICT_COPYING_FILES, - STATE_DELETING_DIRS, STATE_SETTING_DIR_ATTRIBUTES } state; - TDEIO::filesize_t m_totalSize; - TDEIO::filesize_t m_processedSize; - TDEIO::filesize_t m_fileProcessedSize; - int m_processedFiles; - int m_processedDirs; - TQValueList<CopyInfo> files; - TQValueList<CopyInfo> dirs; - KURL::List dirsToRemove; - KURL::List m_srcList; - KURL::List::Iterator m_currentStatSrc; - bool m_bCurrentSrcIsDir; - bool m_bCurrentOperationIsLink; - bool m_bSingleFileCopy; - bool m_bOnlyRenames; - KURL m_dest; - KURL m_currentDest; - // - TQStringList m_skipList; - TQStringList m_overwriteList; - bool m_bAutoSkip; - bool m_bOverwriteAll; - int m_conflictError; - - TQTimer *m_reportTimer; - //these both are used for progress dialog reporting - KURL m_currentSrcURL; - KURL m_currentDestURL; - protected: - virtual void virtual_hook( int id, void* data ); - private: - class CopyJobPrivate; - CopyJobPrivate* d; - friend class CopyJobPrivate; // for DestinationState - }; - - /** - * A more complex Job to delete files and directories. - * Don't create the job directly, but use TDEIO::del() instead. - * - * @see TDEIO::del() - */ - class TDEIO_EXPORT DeleteJob : public Job { - Q_OBJECT - - public: - /** - * Do not create a DeleteJob directly. Use TDEIO::del() - * instead. - * - * @param src the list of URLs to delete - * @param shred true to shred (make sure that data is not recoverable)a - * @param showProgressInfo true to show progress information to the user - * @see TDEIO::del() - */ - DeleteJob( const KURL::List& src, bool shred, bool showProgressInfo ); - - /** - * Returns the list of URLs. - * @return the list of URLs. - */ - KURL::List urls() const { return m_srcList; } - - signals: - - /** - * Emitted when the total number of files is known. - * @param job the job that emitted this signal - * @param files the total number of files - */ - void totalFiles( TDEIO::Job *job, unsigned long files ); - /** - * Emitted when the toal number of direcotries is known. - * @param job the job that emitted this signal - * @param dirs the total number of directories - */ - void totalDirs( TDEIO::Job *job, unsigned long dirs ); - - /** - * Sends the number of processed files. - * @param job the job that emitted this signal - * @param files the number of processed files - */ - void processedFiles( TDEIO::Job *job, unsigned long files ); - /** - * Sends the number of processed directories. - * @param job the job that emitted this signal - * @param dirs the number of processed dirs - */ - void processedDirs( TDEIO::Job *job, unsigned long dirs ); - - /** - * Sends the URL of the file that is currently being deleted. - * @param job the job that emitted this signal - * @param file the URL of the file or directory that is being - * deleted - */ - void deleting( TDEIO::Job *job, const KURL& file ); - - protected slots: - void slotStart(); - void slotEntries( TDEIO::Job*, const TDEIO::UDSEntryList& list ); - virtual void slotResult( TDEIO::Job *job ); - - /** - * Forward signal from subjob - */ - void slotProcessedSize( TDEIO::Job*, TDEIO::filesize_t data_size ); - void slotReport(); - - private: - void statNextSrc(); - void deleteNextFile(); - void deleteNextDir(); - - private: - enum { STATE_STATING, STATE_LISTING, - STATE_DELETING_FILES, STATE_DELETING_DIRS } state; - TDEIO::filesize_t m_totalSize; - TDEIO::filesize_t m_processedSize; - TDEIO::filesize_t m_fileProcessedSize; - int m_processedFiles; - int m_processedDirs; - int m_totalFilesDirs; - KURL m_currentURL; - KURL::List files; - KURL::List symlinks; - KURL::List dirs; - KURL::List m_srcList; - KURL::List::Iterator m_currentStat; - TQStringList m_parentDirs; - bool m_shred; // BIC: remove in KDE4 - TQTimer *m_reportTimer; - protected: - /** \internal */ - virtual void virtual_hook( int id, void* data ); - private: - class DeleteJobPrivate* d; - }; - - /** - * A KIO job that finds a local URL - * @see TDEIO::localURL() - * @since R14.0.0 - */ - class TDEIO_EXPORT LocalURLJob : public SimpleJob { - - Q_OBJECT - - public: - /** - * Do not use this constructor to create a LocalURLJob, use TDEIO::localURL() instead. - * @param url the url of the file or directory to check - * @param command the command to issue - * @param packedArgs the arguments - * @param showProgressInfo true to show progress information to the user - */ - LocalURLJob(const KURL& url, int command, const TQByteArray &packedArgs, bool showProgressInfo); - - /** - * @internal - * Called by the scheduler when a @p slave gets to - * work on this job. - * @param slave the slave that starts working on this job - */ - virtual void start( Slave *slave ); - - signals: - /** - * @param job the job that emitted this signal - * @param url the local url - * @param isLocal true if the returned URL is local, false if not - */ - void localURL( TDEIO::Job *job, const KURL &url, bool isLocal ); - - protected slots: - void slotLocalURL( const KURL &url, bool isLocal ); - virtual void slotFinished(); - - protected: - virtual void virtual_hook( int id, void* data ); - private: - class LocalURLJobPrivate; - LocalURLJobPrivate *d; - }; - -} - -#endif |