//
//     Copyright 2008 Simon Edwards <simon@simonzone.com>

//                 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 Akonadi
{

class ItemModel : QAbstractTableModel
{
%TypeHeaderCode
#include <akonadi/itemmodel.h>
%End

public:

    enum Column
    {
        Id,
        RemoteId,
        MimeType
    };


    enum Roles
    {
        IdRole,
        ItemRole,
        MimeTypeRole,
        UserRole
    };

    explicit                ItemModel (QObject* parent /TransferThis/ = 0);
    virtual int             columnCount (const QModelIndex& parent = QModelIndex()) const;
    virtual QVariant        data (const QModelIndex& index, int role = Qt::DisplayRole) const;
    virtual int             rowCount (const QModelIndex& parent = QModelIndex()) const;
    virtual QVariant        headerData (int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
    virtual Qt::ItemFlags   flags (const QModelIndex& index) const;
    virtual QMimeData*      mimeData (const QModelIndexList& indexes) const;
    virtual QStringList     mimeTypes () const;
    void                    setFetchScope (const Akonadi::ItemFetchScope& fetchScope);
    Akonadi::ItemFetchScope&  fetchScope ();
    Akonadi::Item           itemForIndex (const QModelIndex& index) const;
    QModelIndex             indexForItem (const Akonadi::Item& item, const int column) const;
    bool                    dropMimeData (const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent);
    Akonadi::Collection     collection() const;
    void                    setCollection (const Akonadi::Collection& collection);

signals:
    void                    collectionChanged (const Akonadi::Collection& collection);

protected:
    Akonadi::Session*       session () const;
};   // ItemModel

};   // Akonadi


