//
//     Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
//     may also apply


//                 Generated by preSip
//            module kio  version KDE 3.5.3


// This software is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// This software 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 General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this library; see the file COPYING.
// If not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

namespace TDEIO
{

class Job : TQObject
{
%TypeHeaderCode
#include <jobclasses.h>
%End


protected:
                         Job (bool);

public:
    virtual void         kill (bool = 1);
    int                  error ();
    int                  progressId ();
    const TQString&       errorText ();
    TQString              errorString ();
    TQStringList          detailedErrorStrings (const KURL* = 0, int = -1) const;
    void                 showErrorDialog (TQWidget* = 0);
    void                 setAutoErrorHandlingEnabled (bool, TQWidget* = 0);
    bool                 isAutoErrorHandlingEnabled () const;

%If ( KDE_3_5_0 -  )
    void                 setAutoWarningHandlingEnabled (bool);
    bool                 isAutoWarningHandlingEnabled () const;
%End


%If ( KDE_3_4_3 -  )
    void                 setInteractive (bool);
    bool                 isInteractive () const;
%End

    void                 setWindow (TQWidget*);
    TQWidget*             window () const;

%If ( KDE_3_1_0 -  )
    void                 setParentJob (TDEIO::Job*);
    TDEIO::Job*            parentJob () const;
%End

    void                 setMetaData (const TDEIO::MetaData&);
    void                 addMetaData (const TQString&, const TQString&);
    void                 addMetaData (const TQMap<TQString,TQString>&);
    void                 mergeMetaData (const TQMap<TQString,TQString>&);
    TDEIO::MetaData        outgoingMetaData () const;
    TDEIO::MetaData        metaData () const;
    TQString              queryMetaData (const TQString&);

%If ( KDE_3_2_0 -  )
    TDEIO::filesize_t      getProcessedSize ();
%End


signals:
    void                 result (TDEIO::Job*);
    void                 canceled (TDEIO::Job*);
    void                 infoMessage (TDEIO::Job*, const TQString&);

%If ( KDE_3_5_0 -  )
    void                 warning (TDEIO::Job*, const TQString&);
%End

    void                 connected (TDEIO::Job*);
    void                 percent (TDEIO::Job*, ulong);
    void                 totalSize (TDEIO::Job*, TDEIO::filesize_t);
    void                 processedSize (TDEIO::Job*, TDEIO::filesize_t);
    void                 speed (TDEIO::Job*, ulong);

protected slots:
    virtual void         slotResult (TDEIO::Job*);
    void                 slotSpeed (TDEIO::Job*, ulong);
    void                 slotInfoMessage (TDEIO::Job*, const TQString&);
    void                 slotSpeedTimeout ();

protected:
    virtual void         addSubjob (TDEIO::Job*, bool = 1);
    virtual void         removeSubjob (TDEIO::Job*);

%If ( KDE_3_4_0 -  )
    void                 removeSubjob (TDEIO::Job*, bool, bool);
%End

    void                 emitPercent (TDEIO::filesize_t, TDEIO::filesize_t);
    void                 emitSpeed (ulong);
    void                 emitResult ();

%If ( KDE_3_2_0 -  )
    void                 setProcessedSize (TDEIO::filesize_t);
%End

//ig     int&                 extraFlags ();

protected:
//igx     virtual void         virtual_hook (int, void*);

protected:

%If ( KDE_3_2_0 - KDE_3_2_2 )
    int                  extraFlags ();
%MethodCode
//returns (int)
    Py_BEGIN_ALLOW_THREADS
    sipRes = sipCpp -> sipProtect_extraFlags ();
    Py_END_ALLOW_THREADS
%End

%End


};  // class Job


class SimpleJob : TDEIO::Job
{
%TypeHeaderCode
#include <jobclasses.h>
%End


public:
                         SimpleJob (const KURL&, int, const TQByteArray&, bool);
    const KURL&          url () const;
    virtual void         kill (bool = 1);
    virtual void         putOnHold ();
    static void          removeOnHold ();
    virtual void         start (TDEIO::Slave*);
    void                 slaveDone ();
    TDEIO::Slave*          slave ();
    int                  command ();

public slots:

%If ( KDE_3_1_0 -  )
    void                 slotTotalSize (TDEIO::filesize_t);
%End


protected slots:
    virtual void         slotFinished ();
    void                 slotWarning (const TQString&);
    void                 slotInfoMessage (const TQString&);
    void                 slotConnected ();
    void                 slotProcessedSize (TDEIO::filesize_t);
    void                 slotSpeed (ulong);
    virtual void         slotMetaData (const TDEIO::MetaData&);

public slots:
    virtual void         slotError (int, const TQString&);

protected slots:
    void                 slotNeedProgressId ();

protected:

protected:
//igx     virtual void         virtual_hook (int, void*);

%If ( KDE_3_2_0 -  )
    void                 storeSSLSessionFromJob (const KURL&);
%End


protected slots:

%If (  - KDE_3_1_0 )
    void                 slotTotalSize (TDEIO::filesize_t);
%End


};  // class SimpleJob


class StatJob : TDEIO::SimpleJob
{
%TypeHeaderCode
#include <jobclasses.h>
%End


public:
                         StatJob (const KURL&, int, const TQByteArray&, bool);
    void                 setSide (bool);
    void                 setDetails (short);
    const TDEIO::UDSEntry& statResult () const;
    virtual void         start (TDEIO::Slave*);

signals:
    void                 redirection (TDEIO::Job*, const KURL&);

%If ( KDE_3_1_0 -  )
    void                 permanentRedirection (TDEIO::Job*, const KURL&, const KURL&);
%End


protected slots:
    void                 slotStatEntry (const TDEIO::UDSEntry&);
    void                 slotRedirection (const KURL&);
    virtual void         slotFinished ();

%If ( KDE_3_2_0 -  )
    virtual void         slotMetaData (const TDEIO::MetaData&);
%End


protected:

protected:
//igx     virtual void         virtual_hook (int, void*);

};  // class StatJob


%If ( KDE_3_3_0 -  )

class MkdirJob : TDEIO::SimpleJob
{
%TypeHeaderCode
#include <jobclasses.h>
%End


public:
                         MkdirJob (const KURL&, int, const TQByteArray&, bool);
    virtual void         start (TDEIO::Slave*);

signals:
    void                 redirection (TDEIO::Job*, const KURL&);
    void                 permanentRedirection (TDEIO::Job*, const KURL&, const KURL&);

protected slots:
    void                 slotRedirection (const KURL&);
    virtual void         slotFinished ();

protected:

protected:
    virtual void         virtual_hook (int, void*);

};  // class MkdirJob

%End


%If ( KDE_3_3_0 -  )

class DirectCopyJob : TDEIO::SimpleJob
{
%TypeHeaderCode
#include <jobclasses.h>
%End


public:
                         DirectCopyJob (const KURL&, int, const TQByteArray&, bool);
    virtual void         start (TDEIO::Slave*);

signals:
    void                 canResume (TDEIO::Job*, TDEIO::filesize_t);

};  // class DirectCopyJob

%End


class TransferJob : TDEIO::SimpleJob
{
%TypeHeaderCode
#include <jobclasses.h>
%End


public:
                         TransferJob (const KURL&, int, const TQByteArray&, const TQByteArray&, bool);
    virtual void         start (TDEIO::Slave*);
    virtual void         slotResult (TDEIO::Job*);
    void                 suspend ();
    void                 resume ();
    bool                 isSuspended () const;
    bool                 isErrorPage () const;

%If ( KDE_3_2_0 -  )
    void                 setAsyncDataEnabled (bool);
    void                 sendAsyncData (const TQByteArray&);
    void                 setReportDataSent (bool);
    bool                 reportDataSent ();
%End


signals:
    void                 data (TDEIO::Job*, const TQByteArray&);
    void                 dataReq (TDEIO::Job*, TQByteArray&);
    void                 redirection (TDEIO::Job*, const KURL&);

%If ( KDE_3_1_0 -  )
    void                 permanentRedirection (TDEIO::Job*, const KURL&, const KURL&);
%End

    void                 mimetype (TDEIO::Job*, const TQString&);
    void                 canResume (TDEIO::Job*, TDEIO::filesize_t);

protected slots:
    virtual void         slotRedirection (const KURL&);
    virtual void         slotFinished ();
    virtual void         slotData (const TQByteArray&);
    virtual void         slotDataReq ();
    virtual void         slotMimetype (const TQString&);
    virtual void         slotNeedSubURLData ();
    virtual void         slotSubURLData (TDEIO::Job*, const TQByteArray&);

%If ( KDE_3_2_0 -  )
    virtual void         slotMetaData (const TDEIO::MetaData&);
%End

    void                 slotErrorPage ();
    void                 slotCanResume (TDEIO::filesize_t);

%If ( KDE_3_2_0 -  )
    void                 slotPostRedirection ();
%End


protected:

protected:
//igx     virtual void         virtual_hook (int, void*);

};  // class TransferJob


%If ( KDE_3_3_0 -  )

class StoredTransferJob : TDEIO::TransferJob
{
%TypeHeaderCode
#include <jobclasses.h>
%End


public:
                         StoredTransferJob (const KURL&, int, const TQByteArray&, const TQByteArray&, bool);
    void                 setData (const TQByteArray&);
    TQByteArray           data () const;

};  // class StoredTransferJob

%End


class MultiGetJob : TDEIO::TransferJob
{
%TypeHeaderCode
#include <jobclasses.h>
%End


public:
                         MultiGetJob (const KURL&, bool);
    virtual void         start (TDEIO::Slave*);
    void                 get (long, const KURL&, const TDEIO::MetaData&);

signals:
    void                 data (long, const TQByteArray&);
    void                 mimetype (long, const TQString&);
    void                 result (long);

protected slots:
    virtual void         slotRedirection (const KURL&);
    virtual void         slotFinished ();
    virtual void         slotData (const TQByteArray&);
    virtual void         slotMimetype (const TQString&);

protected:
//igx     virtual void         virtual_hook (int, void*);

};  // class MultiGetJob


class MimetypeJob : TDEIO::TransferJob
{
%TypeHeaderCode
#include <jobclasses.h>
%End


public:
                         MimetypeJob (const KURL&, int, const TQByteArray&, bool);
    TQString              mimetype () const;
    virtual void         start (TDEIO::Slave*);

protected slots:
    virtual void         slotFinished ();

protected:
//igx     virtual void         virtual_hook (int, void*);

};  // class MimetypeJob


class FileCopyJob : TDEIO::Job
{
%TypeHeaderCode
#include <jobclasses.h>
%End


public:
                         FileCopyJob (const KURL&, const KURL&, int, bool, bool, bool, bool);

%If ( KDE_3_2_0 -  )
    void                 setSourceSize64 (TDEIO::filesize_t);

%If ( KDE_3_5_2 -  )
    void                 setModificationTime (time_t);
%End

%End

//ig     void                 setSourceSize (off_t);
    KURL                 srcURL () const;
    KURL                 destURL () const;

public slots:
    void                 slotStart ();
    void                 slotData (TDEIO::Job*, const TQByteArray&);
    void                 slotDataReq (TDEIO::Job*, TQByteArray&);

protected slots:
    virtual void         slotResult (TDEIO::Job*);
    void                 slotProcessedSize (TDEIO::Job*, TDEIO::filesize_t);
    void                 slotTotalSize (TDEIO::Job*, TDEIO::filesize_t);
    void                 slotPercent (TDEIO::Job*, ulong);
    void                 slotCanResume (TDEIO::Job*, TDEIO::filesize_t);

protected:
    void                 startCopyJob ();
    void                 startCopyJob (const KURL&);

%If ( KDE_3_4_0 -  )
    void                 startRenameJob (const KURL&);
%End

    void                 startDataPump ();
    void                 connectSubjob (TDEIO::SimpleJob*);

protected:

protected:
//igx     virtual void         virtual_hook (int, void*);

};  // class FileCopyJob


class ListJob : TDEIO::SimpleJob
{
%TypeHeaderCode
#include <jobclasses.h>
%End


public:
                         ListJob (const KURL&, bool, bool = 0, TQString = TQString ::null , bool = 1);
    virtual void         start (TDEIO::Slave*);

%If ( KDE_3_4_3 -  )
    const KURL&          redirectionURL () const;
%End


%If ( KDE_3_2_0 -  )
    void                 setUnrestricted (bool);
%End


signals:
    void                 entries (TDEIO::Job*, const TDEIO::UDSEntryList&);
    void                 redirection (TDEIO::Job*, const KURL&);

%If ( KDE_3_1_0 -  )
    void                 permanentRedirection (TDEIO::Job*, const KURL&, const KURL&);
%End


protected slots:
    virtual void         slotFinished ();

%If ( KDE_3_2_0 -  )
    virtual void         slotMetaData (const TDEIO::MetaData&);
%End

    virtual void         slotResult (TDEIO::Job*);
    void                 slotListEntries (const TDEIO::UDSEntryList&);
    void                 slotRedirection (const KURL&);
    void                 gotEntries (TDEIO::Job*, const TDEIO::UDSEntryList&);

protected:
//igx     virtual void         virtual_hook (int, void*);

};  // class ListJob


class CopyInfo
{
%TypeHeaderCode
#include <jobclasses.h>
%End


public:
    KURL                 uSource;
    KURL                 uDest;
    TQString              linkDest;
    mode_t               permissions;
    time_t               ctime;
    time_t               mtime;
    off_t                size;

};  // class CopyInfo


class CopyJob : TDEIO::Job
{
%TypeHeaderCode
#include <jobclasses.h>
%End


public:

    enum CopyMode
    {
        Copy, 
        Move, 
        Link
    };

                         CopyJob (const KURL::List&, const KURL&, TDEIO::CopyJob::CopyMode, bool, bool);
    KURL::List           srcURLs () const;
    KURL                 destURL () const;

%If ( KDE_3_2_3 -  )
    void                 setDefaultPermissions (bool);

%If ( KDE_3_4_0 -  )
    void                 setInteractive (bool);
%End

%End


signals:
    void                 totalFiles (TDEIO::Job*, ulong);
    void                 totalDirs (TDEIO::Job*, ulong);

%If ( KDE_3_2_0 -  )
    void                 aboutToCreate (TDEIO::Job*, const TQValueList<TDEIO::CopyInfo>&);
%End

    void                 processedFiles (TDEIO::Job*, ulong);
    void                 processedDirs (TDEIO::Job*, ulong);
    void                 copying (TDEIO::Job*, const KURL&, const KURL&);
    void                 linking (TDEIO::Job*, const TQString&, const KURL&);
    void                 moving (TDEIO::Job*, const KURL&, const KURL&);
    void                 creatingDir (TDEIO::Job*, const KURL&);
    void                 renamed (TDEIO::Job*, const KURL&, const KURL&);
    void                 copyingDone (TDEIO::Job*, const KURL&, const KURL&, bool, bool);
    void                 copyingLinkDone (TDEIO::Job*, const KURL&, const TQString&, const KURL&);

protected:

%If ( KDE_3_2_3 -  )
    void                 statCurrentSrc ();
%End

    void                 statNextSrc ();
    void                 slotResultStating (TDEIO::Job*);
    void                 startListing (const KURL&);
    void                 slotResultCreatingDirs (TDEIO::Job*);
    void                 slotResultConflictCreatingDirs (TDEIO::Job*);
    void                 createNextDir ();
    void                 slotResultCopyingFiles (TDEIO::Job*);
    void                 slotResultConflictCopyingFiles (TDEIO::Job*);
    void                 copyNextFile ();
    void                 slotResultDeletingDirs (TDEIO::Job*);
    void                 deleteNextDir ();
    void                 skip (const KURL&);

%If ( KDE_3_3_2 -  )
    void                 slotResultRenaming (TDEIO::Job*);

%If ( KDE_3_5_2 -  )
    void                 setNextDirAttribute ();
%End

%End


protected slots:
    void                 slotStart ();
    void                 slotEntries (TDEIO::Job*, const TDEIO::UDSEntryList&);
    virtual void         slotResult (TDEIO::Job*);
    void                 slotProcessedSize (TDEIO::Job*, TDEIO::filesize_t);
    void                 slotTotalSize (TDEIO::Job*, TDEIO::filesize_t);
    void                 slotReport ();

protected:
//igx     virtual void         virtual_hook (int, void*);

};  // class CopyJob


class DeleteJob : TDEIO::Job
{
%TypeHeaderCode
#include <jobclasses.h>
%End


public:
                         DeleteJob (const KURL::List&, bool, bool);
    KURL::List           urls () const;

signals:
    void                 totalFiles (TDEIO::Job*, ulong);
    void                 totalDirs (TDEIO::Job*, ulong);
    void                 processedFiles (TDEIO::Job*, ulong);
    void                 processedDirs (TDEIO::Job*, ulong);
    void                 deleting (TDEIO::Job*, const KURL&);

protected slots:
    void                 slotStart ();
    void                 slotEntries (TDEIO::Job*, const TDEIO::UDSEntryList&);
    virtual void         slotResult (TDEIO::Job*);
    void                 slotProcessedSize (TDEIO::Job*, TDEIO::filesize_t);
    void                 slotReport ();

protected:
//igx     virtual void         virtual_hook (int, void*);

protected:

%If (  - KDE_3_1_0 )
    void                 startNextJob ();
    void                 deleteNextFile ();
    void                 deleteNextDir ();
%End


};  // class DeleteJob

};  // namespace TDEIO



%MappedType TQValueList<TDEIO::CopyInfo>
//converts a Python list of TDEIO::CopyInfo
{
%TypeHeaderCode
#include <tqvaluelist.h>
%End

%ConvertFromTypeCode
    if (!sipCpp)
        return PyList_New(0);

    // Create the list
    PyObject *pylist;
    if ((pylist = PyList_New(0)) == NULL)
        return NULL;

    TQValueList<TDEIO::CopyInfo> *cpplist = (TQValueList<TDEIO::CopyInfo> *)sipCpp;
    PyObject *inst;

    // Get it.
    TQValueList<TDEIO::CopyInfo>::Iterator it;
    for( it = cpplist->begin(); it != cpplist->end(); ++it )
    {
        if (((inst = sipConvertFromNewType(new TDEIO::CopyInfo(*it), sipType_KIO_CopyInfo, NULL)) == NULL)
            || PyList_Append (pylist, inst) < 0)
        {
            Py_DECREF (pylist);
            return NULL;
        }
    }

    return pylist;
%End


%ConvertToTypeCode
    if (sipIsErr == NULL)
        return PyList_Check(sipPy);

    TQValueList<TDEIO::CopyInfo> *cpplist = new TQValueList<TDEIO::CopyInfo>;

    PyObject *elem;
    TDEIO::CopyInfo *cpp;
    int iserr = 0;

    for (int i = 0; i < PyList_Size (sipPy); i++)
    {
        elem = PyList_GET_ITEM (sipPy, i);
        cpp = (TDEIO::CopyInfo *)sipForceConvertToType(elem, sipType_KIO_CopyInfo, sipTransferObj, SIP_NOT_NONE|SIP_NO_CONVERTORS, NULL, &iserr);

        if (iserr)
        {
            *sipIsErr = 1;
            delete cpplist;
            return 0;
        }

        cpplist->append (*cpp);
    }

    *sipCppPtr = cpplist;

    return 1;
%End
};


