//
//     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.,
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

namespace KIO
{

class Scheduler : QObject, DCOPObject
{
%TypeHeaderCode
#include <scheduler.h>
%End


public:
//ig     typedef QPtrList<KIO::SimpleJob> JobList;
    static void          doJob (KIO::SimpleJob*);
    static void          scheduleJob (KIO::SimpleJob*);
    static void          cancelJob (KIO::SimpleJob*);
    static void          jobFinished (KIO::SimpleJob*, KIO::Slave*);
    static void          putSlaveOnHold (KIO::SimpleJob*, const KURL&);
    static void          removeSlaveOnHold ();
    static void          publishSlaveOnHold ();
//doc
// There is no default value for config (KIO.MetaData) - pass an
// empty Python dict if you need the default value
//end
    static KIO::Slave*   getConnectedSlave (const KURL&, const KIO::MetaData&);
    static bool          assignJobToSlave (KIO::Slave*, KIO::SimpleJob*);
    static bool          disconnectSlave (KIO::Slave*);

%If ( KDE_3_1_0 -  )
    static void          registerWindow (QWidget*);

%If ( KDE_3_2_0 -  )
    static void          unregisterWindow (QObject*);
%End

%End

    static bool          connect (const char*, const QObject*, const char*);
    static bool          connect (const QObject*, const char*, const QObject*, const char*);
    static bool          disconnect (const QObject*, const char*, const QObject*, const char*);
    bool                 connect (const QObject*, const char*, const char*);
    static void          checkSlaveOnHold (bool);
    void                 debug_info ();
    virtual bool         process (const QCString&, const QByteArray&, QCString&, QByteArray&);
    virtual QCStringList functions ();

public slots:
    void                 slotSlaveDied (KIO::Slave*);
    void                 slotSlaveStatus (pid_t, const QCString&, const QString&, bool);

signals:
    void                 slaveConnected (KIO::Slave*);
    void                 slaveError (KIO::Slave*, int, const QString&);

protected:
    void                 setupSlave (KIO::Slave*, const KURL&, const QString&, const QString&, bool, const KIO::MetaData* = 0);
//ig     bool                 startJobScheduled (KIO::Scheduler::ProtocolInfo*);
    bool                 startJobDirect ();
                         Scheduler ();

protected slots:
    void                 startStep ();
    void                 slotCleanIdleSlaves ();
    void                 slotSlaveConnected ();
    void                 slotSlaveError (int, const QString&);
    void                 slotScheduleCoSlave ();

%If ( KDE_3_1_0 -  )
    void                 slotUnregisterWindow (QObject*);
%End


private:
                         Scheduler (const KIO::Scheduler&);

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

};  // class Scheduler

};  // namespace KIO

