//
//     Copyright 2008 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2007 Jim Bublitz also apply

//                 Generated by twine

// This file is part of PyKDE4.

// PyKDE4 is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 2.1 of
// the License, or (at your option) any later version.

// PyKDE4 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 program.  If not, see <http://www.gnu.org/licenses/>.

namespace KIO
{

class FileUndoManager : QObject
{
%TypeHeaderCode
#include <fileundomanager.h>
%End


public:
    static KIO::FileUndoManager*  self ();

    class UiInterface
    {

    public:
                                UiInterface ();
        void                    setShowProgressInfo (bool b);
        bool                    showProgressInfo () const;
        void                    setParentWidget (QWidget* parentWidget);
        QWidget*                parentWidget () const;
        virtual void            jobError (KIO::Job* job);
        virtual bool            confirmDeletion (const KUrl::List& files);
        virtual bool            copiedFileWasModified (const KUrl& src, const KUrl& dest, const KDateTime& srcTime, const KDateTime& destTime);


//io ambiguous symbol: void* data -- specify In, Out or both
//io         virtual void       virtual_hook (int id, void* data);


    };   // UiInterface


public:
    void                    setUiInterface (KIO::FileUndoManager::UiInterface* ui);
    KIO::FileUndoManager::UiInterface*  uiInterface () const;

    enum CommandType
    {
        Copy,
        Move,
        Rename,
        Link,
        Mkdir,
        Trash
    };

    void                    recordJob (KIO::FileUndoManager::CommandType op, const KUrl::List& src, const KUrl& dst, KIO::Job* job);
    void                    recordCopyJob (KIO::CopyJob* copyJob);
    bool                    undoAvailable () const;
    QString                 undoText () const;
    quint64                 newCommandSerialNumber ();
    quint64                 currentCommandSerialNumber () const;
    void                    undo ();

signals:
    void                    undoAvailable (bool avail);
    void                    undoTextChanged (const QString& text);
    void                    undoJobFinished ();
    void                    jobRecordingStarted (KIO::FileUndoManager::CommandType op);
    void                    jobRecordingFinished (KIO::FileUndoManager::CommandType op);

private:
                            FileUndoManager ();
    virtual                 ~FileUndoManager ();
};   // FileUndoManager

};   // KIO


