//Auto-generated by kalyptus. DO NOT EDIT.
namespace Akonadi {
    using Kimono;
    using System;
    using Qyoto;
    /// <remarks>
    ///  This model extends the CollectionModel by providing additional
    ///  information about the collections, e.g. the number of items
    ///  in a collection or the number of read/unread items.
    ///  Example:
    ///  @code
    ///  QTreeView view = new QTreeView( this );
    ///  Akonadi.CollectionStatisticsModel model = new Akonadi.CollectionStatisticsModel( view );
    ///  view.SetModel( model );
    ///  @endcode
    /// </remarks>        <author> Volker Krause <vkrause@kde.org>
    ///  </author>
    ///         <short> A model that provides statistics for collections. </short>
    [SmokeClass("Akonadi::CollectionStatisticsModel")]
    public class CollectionStatisticsModel : Akonadi.CollectionModel, IDisposable {
        protected CollectionStatisticsModel(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(CollectionStatisticsModel), this);
        }
        /// <remarks>
        ///  Describes the roles for the statistics collection model.
        ///      </remarks>        <short>    Describes the roles for the statistics collection model.</short>
        public enum Roles {
            UnreadRole = CollectionModel.Roles.UserRole+1,
            TotalRole = 0,
            StatisticsRole = 1,
            RecursiveUnreadRole = 2,
            RecursiveTotalRole = 3,
            RecursiveStatisticsRole = 4,
            UserRole = CollectionModel.Roles.UserRole+42,
        }
        /// <remarks>
        ///  Creates a new collection statistics model.
        /// <param> name="parent" The parent object.
        ///      </param></remarks>        <short>    Creates a new collection statistics model.</short>
        public CollectionStatisticsModel(QObject parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("CollectionStatisticsModel#", "CollectionStatisticsModel(QObject*)", typeof(void), typeof(QObject), parent);
        }
        public CollectionStatisticsModel() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("CollectionStatisticsModel", "CollectionStatisticsModel()", 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 override 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 override 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);
        }
        ~CollectionStatisticsModel() {
            interceptor.Invoke("~CollectionStatisticsModel", "~CollectionStatisticsModel()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~CollectionStatisticsModel", "~CollectionStatisticsModel()", typeof(void));
        }
        protected new ICollectionStatisticsModelSignals Emit {
            get { return (ICollectionStatisticsModelSignals) Q_EMIT; }
        }
    }

    public interface ICollectionStatisticsModelSignals : Akonadi.ICollectionModelSignals {
    }
}
