//Auto-generated by kalyptus. DO NOT EDIT.
namespace Kimono {
    using System;
    using Qyoto;
    /// <remarks>
    ///   This class is an abstract base class which must be used to
    ///   implement custom models for KPageView. Additional to the standard
    ///   Qt.ItemDataRoles it provides the two roles
    /// 
    /// <li>
    /// HeaderRole
    /// </li>
    /// 
    /// <li>
    /// WidgetRole
    /// </li>
    ///   which are used to return a header string for a page and a QWidget
    ///   pointer to the page itself.
    ///   <li><b>Example:</b></li>
    ///   <pre>
    ///     KPageView view = new KPageView( this );
    ///     KPageModel model = new MyPageModel( this );
    ///     view.SetModel( model );
    ///   </pre>
    /// </remarks>        <author> Tobias Koenig <tokoe@kde.org>
    ///  </author>
    ///         <short> A base class for a model used by KPageView. </short>
    ///         <see> KPageView</see>
    [SmokeClass("KPageModel")]
    public class KPageModel : QAbstractItemModel, IDisposable {
        protected KPageModel(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(KPageModel), this);
        }
        /// <remarks>
        ///  Additional roles that KPageView uses.
        ///          </remarks>        <short>    Additional roles that KPageView uses.</short>
        public enum Role {
            HeaderRole = Qt.ItemDataRole.UserRole+1,
            WidgetRole = 0,
        }
        // KPageModel* KPageModel(KPageModelPrivate& arg1,QObject* arg2); >>>> NOT CONVERTED
        /// <remarks>
        ///  Constructs a page model with the given parent.
        ///      </remarks>        <short>    Constructs a page model with the given parent.</short>
        public KPageModel(QObject parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("KPageModel#", "KPageModel(QObject*)", typeof(void), typeof(QObject), parent);
        }
        public KPageModel() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("KPageModel", "KPageModel()", typeof(void));
        }
        // WARNING: Unimplemented C++ pure virtual - DO NOT CALL
        [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));
        }
        // WARNING: Unimplemented C++ pure virtual - DO NOT CALL
        [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);
        }
        // WARNING: Unimplemented C++ pure virtual - DO NOT CALL
        [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));
        }
        // WARNING: Unimplemented C++ pure virtual - DO NOT CALL
        [SmokeMethod("parent(const QModelIndex&) const")]
        public override QModelIndex Parent(QModelIndex child) {
            return (QModelIndex) interceptor.Invoke("parent#", "parent(const QModelIndex&) const", typeof(QModelIndex), typeof(QModelIndex), child);
        }
        // WARNING: Unimplemented C++ pure virtual - DO NOT CALL
        [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);
        }
        ~KPageModel() {
            interceptor.Invoke("~KPageModel", "~KPageModel()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~KPageModel", "~KPageModel()", typeof(void));
        }
        protected new IKPageModelSignals Emit {
            get { return (IKPageModelSignals) Q_EMIT; }
        }
    }

    public interface IKPageModelSignals : IQAbstractItemModelSignals {
    }
}
