//Auto-generated by kalyptus. DO NOT EDIT.
namespace Akonadi {
    using Kimono;
    using System;
    using Qyoto;
    /// <remarks>
    ///  This class provides the interface of a QAbstractItemModel to
    ///  access all available agent instances: their name, identifier,
    ///  supported mimetypes and capabilities.
    ///  @code
    ///  Akonadi.AgentInstanceModel model = new Akonadi.AgentInstanceModel( this );
    ///  QListView view = new QListView( this );
    ///  view.SetModel( model );
    ///  @endcode
    ///  To show only agent instances that match a given mime type or special
    ///  capabilities, use the AgentFilterProxyModel on top of this model.
    /// </remarks>        <author> Tobias Koenig <tokoe@kde.org>
    ///  </author>
    ///         <short> Provides a data model for agent instances. </short>
    [SmokeClass("Akonadi::AgentInstanceModel")]
    public class AgentInstanceModel : QAbstractItemModel, IDisposable {
        protected AgentInstanceModel(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(AgentInstanceModel), this);
        }
        /// <remarks>
        ///  Describes the roles of this model.
        ///      </remarks>        <short>    Describes the roles of this model.</short>
        public enum Roles {
            TypeRole = Qt.ItemDataRole.UserRole+1,
            TypeIdentifierRole = 0,
            DescriptionRole = 1,
            MimeTypesRole = 2,
            CapabilitiesRole = 3,
            InstanceRole = 4,
            InstanceIdentifierRole = 5,
            StatusRole = 6,
            StatusMessageRole = 7,
            ProgressRole = 8,
            OnlineRole = 9,
            UserRole = Qt.ItemDataRole.UserRole+42,
        }
        /// <remarks>
        ///  Creates a new agent instance model.
        /// <param> name="parent" The parent object.
        ///      </param></remarks>        <short>    Creates a new agent instance model.</short>
        public AgentInstanceModel(QObject parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("AgentInstanceModel#", "AgentInstanceModel(QObject*)", typeof(void), typeof(QObject), parent);
        }
        public AgentInstanceModel() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("AgentInstanceModel", "AgentInstanceModel()", 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("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("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("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("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("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("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);
        }
        ~AgentInstanceModel() {
            interceptor.Invoke("~AgentInstanceModel", "~AgentInstanceModel()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~AgentInstanceModel", "~AgentInstanceModel()", typeof(void));
        }
        protected new IAgentInstanceModelSignals Emit {
            get { return (IAgentInstanceModelSignals) Q_EMIT; }
        }
    }

    public interface IAgentInstanceModelSignals : IQAbstractItemModelSignals {
    }
}
