//Auto-generated by kalyptus. DO NOT EDIT.
namespace Akonadi {
    using Kimono;
    using System;
    using Qyoto;
    using System.Collections.Generic;
    /// <remarks>
    ///  This class provides the interface of QAbstractItemModel for the
    ///  collection tree of the Akonadi storage.
    ///  @code
    ///    Akonadi.CollectionModel model = new Akonadi.CollectionModel( this );
    ///    QTreeView view = new QTreeView( this );
    ///    view.SetModel( model );
    ///  @endcode
    ///  If you want to list only collections of a special mime type, use
    ///  CollectionFilterProxyModel on top of this model.
    /// </remarks>        <author> Volker Krause <vkrause@kde.org>
    ///  </author>
    ///         <short> A model for collections. </short>
    [SmokeClass("Akonadi::CollectionModel")]
    public class CollectionModel : QAbstractItemModel, IDisposable {
        protected CollectionModel(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(CollectionModel), this);
        }
        /// <remarks>
        ///  Describes the roles for collections.
        ///      </remarks>        <short>    Describes the roles for collections.</short>
        public enum Roles {
            CollectionIdRole = Qt.ItemDataRole.UserRole+1,
            CollectionRole = 0,
            UserRole = Qt.ItemDataRole.UserRole+42,
        }
        // Akonadi::CollectionModel* CollectionModel(Akonadi::CollectionModelPrivate* arg1,QObject* arg2); >>>> NOT CONVERTED
        // Akonadi::CollectionModel* CollectionModel(Akonadi::CollectionModelPrivate* arg1); >>>> NOT CONVERTED
        /// <remarks>
        ///  Creates a new collection model.
        /// <param> name="parent" The parent object.
        ///      </param></remarks>        <short>    Creates a new collection model.</short>
        public CollectionModel(QObject parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("CollectionModel#", "CollectionModel(QObject*)", typeof(void), typeof(QObject), parent);
        }
        public CollectionModel() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("CollectionModel", "CollectionModel()", typeof(void));
        }
        /// <remarks>
        ///  Sets whether collection statistics information shall be provided
        ///  by the model.
        /// </remarks>        <short>    Sets whether collection statistics information shall be provided  by the model.</short>
        ///         <see> CollectionStatistics.</see>
        public void FetchCollectionStatistics(bool enable) {
            interceptor.Invoke("fetchCollectionStatistics$", "fetchCollectionStatistics(bool)", typeof(void), typeof(bool), enable);
        }
        /// <remarks>
        ///  Sets whether unsubscribed collections shall be listed in the model.
        ///      </remarks>        <short>    Sets whether unsubscribed collections shall be listed in the model.</short>
        public void IncludeUnsubscribed(bool include) {
            interceptor.Invoke("includeUnsubscribed$", "includeUnsubscribed(bool)", typeof(void), typeof(bool), include);
        }
        public void IncludeUnsubscribed() {
            interceptor.Invoke("includeUnsubscribed", "includeUnsubscribed()", typeof(void));
        }
        [SmokeMethod("columnCount(const QModelIndex&) const")]
        public override int ColumnCount(QModelIndex parent) {
            return (int) interceptor.Invoke("columnCount#", "columnCount(const QModelIndex&) const", typeof(int), typeof(QModelIndex), parent);
        }
        [SmokeMethod("columnCount() const")]
        public virtual int ColumnCount() {
            return (int) interceptor.Invoke("columnCount", "columnCount() const", typeof(int));
        }
        [SmokeMethod("data(const QModelIndex&, int) const")]
        public override QVariant Data(QModelIndex index, int role) {
            return (QVariant) interceptor.Invoke("data#$", "data(const QModelIndex&, int) const", typeof(QVariant), typeof(QModelIndex), index, typeof(int), role);
        }
        [SmokeMethod("data(const QModelIndex&) const")]
        public virtual QVariant Data(QModelIndex index) {
            return (QVariant) interceptor.Invoke("data#", "data(const QModelIndex&) const", typeof(QVariant), typeof(QModelIndex), index);
        }
        [SmokeMethod("index(int, int, const QModelIndex&) const")]
        public override QModelIndex Index(int row, int column, QModelIndex parent) {
            return (QModelIndex) interceptor.Invoke("index$$#", "index(int, int, const QModelIndex&) const", typeof(QModelIndex), typeof(int), row, typeof(int), column, typeof(QModelIndex), parent);
        }
        [SmokeMethod("index(int, int) const")]
        public virtual QModelIndex Index(int row, int column) {
            return (QModelIndex) interceptor.Invoke("index$$", "index(int, int) const", typeof(QModelIndex), typeof(int), row, typeof(int), column);
        }
        [SmokeMethod("parent(const QModelIndex&) const")]
        public override QModelIndex Parent(QModelIndex index) {
            return (QModelIndex) interceptor.Invoke("parent#", "parent(const QModelIndex&) const", typeof(QModelIndex), typeof(QModelIndex), index);
        }
        [SmokeMethod("rowCount(const QModelIndex&) const")]
        public override int RowCount(QModelIndex parent) {
            return (int) interceptor.Invoke("rowCount#", "rowCount(const QModelIndex&) const", typeof(int), typeof(QModelIndex), parent);
        }
        [SmokeMethod("rowCount() const")]
        public virtual int RowCount() {
            return (int) interceptor.Invoke("rowCount", "rowCount() const", typeof(int));
        }
        [SmokeMethod("headerData(int, Qt::Orientation, int) const")]
        public override QVariant HeaderData(int section, Qt.Orientation orientation, int role) {
            return (QVariant) interceptor.Invoke("headerData$$$", "headerData(int, Qt::Orientation, int) const", typeof(QVariant), typeof(int), section, typeof(Qt.Orientation), orientation, typeof(int), role);
        }
        [SmokeMethod("headerData(int, Qt::Orientation) const")]
        public override QVariant HeaderData(int section, Qt.Orientation orientation) {
            return (QVariant) interceptor.Invoke("headerData$$", "headerData(int, Qt::Orientation) const", typeof(QVariant), typeof(int), section, typeof(Qt.Orientation), orientation);
        }
        [SmokeMethod("setData(const QModelIndex&, const QVariant&, int)")]
        public override bool SetData(QModelIndex index, QVariant value, int role) {
            return (bool) interceptor.Invoke("setData##$", "setData(const QModelIndex&, const QVariant&, int)", typeof(bool), typeof(QModelIndex), index, typeof(QVariant), value, typeof(int), role);
        }
        [SmokeMethod("setData(const QModelIndex&, const QVariant&)")]
        public override bool SetData(QModelIndex index, QVariant value) {
            return (bool) interceptor.Invoke("setData##", "setData(const QModelIndex&, const QVariant&)", typeof(bool), typeof(QModelIndex), index, typeof(QVariant), value);
        }
        [SmokeMethod("flags(const QModelIndex&) const")]
        public override uint Flags(QModelIndex index) {
            return (uint) interceptor.Invoke("flags#", "flags(const QModelIndex&) const", typeof(uint), typeof(QModelIndex), index);
        }
        [SmokeMethod("supportedDropActions() const")]
        public override uint SupportedDropActions() {
            return (uint) interceptor.Invoke("supportedDropActions", "supportedDropActions() const", typeof(uint));
        }
        [SmokeMethod("mimeData(const QList<QModelIndex>&) const")]
        public override QMimeData MimeData(List<QModelIndex> indexes) {
            return (QMimeData) interceptor.Invoke("mimeData?", "mimeData(const QList<QModelIndex>&) const", typeof(QMimeData), typeof(List<QModelIndex>), indexes);
        }
        [SmokeMethod("dropMimeData(const QMimeData*, Qt::DropAction, int, int, const QModelIndex&)")]
        public override bool DropMimeData(QMimeData data, Qt.DropAction action, int row, int column, QModelIndex parent) {
            return (bool) interceptor.Invoke("dropMimeData#$$$#", "dropMimeData(const QMimeData*, Qt::DropAction, int, int, const QModelIndex&)", typeof(bool), typeof(QMimeData), data, typeof(Qt.DropAction), action, typeof(int), row, typeof(int), column, typeof(QModelIndex), parent);
        }
        [SmokeMethod("mimeTypes() const")]
        public override List<string> MimeTypes() {
            return (List<string>) interceptor.Invoke("mimeTypes", "mimeTypes() const", typeof(List<string>));
        }
        /// <remarks>
        ///  Returns the collection for a given collection <code>id.</code>
        ///      </remarks>        <short>    Returns the collection for a given collection <code>id.</code></short>
        protected Akonadi.Collection CollectionForId(long id) {
            return (Akonadi.Collection) interceptor.Invoke("collectionForId$", "collectionForId(qint64) const", typeof(Akonadi.Collection), typeof(long), id);
        }
        ~CollectionModel() {
            interceptor.Invoke("~CollectionModel", "~CollectionModel()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~CollectionModel", "~CollectionModel()", typeof(void));
        }
        protected new ICollectionModelSignals Emit {
            get { return (ICollectionModelSignals) Q_EMIT; }
        }
    }

    public interface ICollectionModelSignals : IQAbstractItemModelSignals {
    }
}
