//
//     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/>.

%ModuleHeaderCode
#include <kdirmodel.h>
%End


class KDirModel : QAbstractItemModel
{
%TypeHeaderCode
#include <kdirmodel.h>
%End


public:
    explicit                KDirModel (QObject* parent /TransferThis/ = 0);
    void                    setDirLister (KDirLister* dirLister);
    KDirLister*             dirLister () const;
    KFileItem               itemForIndex (const QModelIndex& index) const;
    QModelIndex             indexForItem (const KFileItem*) const;
    QModelIndex             indexForItem (const KFileItem&) const;
    QModelIndex             indexForUrl (const KUrl& url) const;
    void                    expandToUrl (const KUrl& url);
    void                    itemChanged (const QModelIndex& index);

    enum ModelColumns
    {
        Name,
        Size,
        ModifiedTime,
        Permissions,
        Owner,
        Group,
        Type,
        ColumnCount
    };


    enum
    {
        ChildCountUnknown
    };


    enum AdditionalRoles
    {
        FileItemRole,
        ChildCountRole,
        HasJobRole
    };


    enum DropsAllowedFlag
    {
        NoDrops,
        DropOnDirectory,
        DropOnAnyFile,
        DropOnLocalExecutable
    };

    typedef QFlags<KDirModel::DropsAllowedFlag> DropsAllowed;

    void                    setDropsAllowed (KDirModel::DropsAllowed dropsAllowed);
    virtual bool            canFetchMore (const QModelIndex& parent /Transfer/) const;
    virtual int             columnCount (const QModelIndex& parent /Transfer/ = QModelIndex()) const;
    virtual QVariant        data (const QModelIndex& index, int role = Qt::DisplayRole) const;
    virtual bool            dropMimeData (const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent /Transfer/);
    virtual void            fetchMore (const QModelIndex& parent /Transfer/);
    virtual Qt::ItemFlags   flags (const QModelIndex& index) const;
    virtual bool            hasChildren (const QModelIndex& parent /Transfer/ = QModelIndex()) const;
    virtual QVariant        headerData (int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
    virtual QModelIndex     index (int row, int column, const QModelIndex& parent /Transfer/ = QModelIndex()) const;
    virtual QMimeData*      mimeData (const QModelIndexList& indexes) const;
    virtual QStringList     mimeTypes () const;
    virtual QModelIndex     parent (const QModelIndex& index) const;
    virtual int             rowCount (const QModelIndex& parent /Transfer/ = QModelIndex()) const;
    virtual bool            setData (const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
    virtual void            sort (int column, Qt::SortOrder order = Qt::AscendingOrder);
    static KUrl::List       simplifiedUrlList (const KUrl::List& urls);
    void                    requestSequenceIcon (const QModelIndex& index, int sequenceIndex);

signals:
    void                    expand (const QModelIndex& index);
    void                    needSequenceIcon (const QModelIndex& index, int sequenceIndex);
public:
    ~KDirModel ();
    void                    setJobTransfersVisible (bool value);
    bool                    jobTransfersVisible () const;
//force
private:
    virtual bool removeColumns(int, int, const QModelIndex&);
    virtual bool removeRows(int, int, const QModelIndex&);
    virtual bool insertColumns(int, int, const QModelIndex&);
    virtual bool insertRows(int, int, const QModelIndex&);
//end
};
// KDirModel


