//Auto-generated by kalyptus. DO NOT EDIT.
namespace Kimono {
    using System;
    using Qyoto;
    /// <remarks>
    ///  This page model is used by @see KPageWidget to provide
    ///  a hierarchical layout of pages.
    ///   See <see cref="IKPageWidgetModelSignals"></see> for signals emitted by KPageWidgetModel
    /// </remarks>        <short>    This page model is used by @see KPageWidget to provide  a hierarchical layout of pages.</short>
    [SmokeClass("KPageWidgetModel")]
    public class KPageWidgetModel : KPageModel, IDisposable {
        protected KPageWidgetModel(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(KPageWidgetModel), this);
        }
        /// <remarks>
        ///  Creates a new page widget model.
        /// <param> name="parent" The parent object.
        ///      </param></remarks>        <short>    Creates a new page widget model.</short>
        public KPageWidgetModel(QObject parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("KPageWidgetModel#", "KPageWidgetModel(QObject*)", typeof(void), typeof(QObject), parent);
        }
        public KPageWidgetModel() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("KPageWidgetModel", "KPageWidgetModel()", typeof(void));
        }
        /// <remarks>
        ///  Adds a new top level page to the model.
        /// <param> name="widget" The widget of the page.
        /// </param><param> name="name" The name which is displayed in the navigation view.
        /// </param></remarks>        <return> The associated @see KPageWidgetItem.
        ///      </return>
        ///         <short>    Adds a new top level page to the model.</short>
        public KPageWidgetItem AddPage(QWidget widget, string name) {
            return (KPageWidgetItem) interceptor.Invoke("addPage#$", "addPage(QWidget*, const QString&)", typeof(KPageWidgetItem), typeof(QWidget), widget, typeof(string), name);
        }
        /// <remarks>
        ///  Adds a new top level page to the model.
        /// <param> name="item" The @see KPageWidgetItem which describes the page.
        ///      </param></remarks>        <short>    Adds a new top level page to the model.</short>
        public void AddPage(KPageWidgetItem item) {
            interceptor.Invoke("addPage#", "addPage(KPageWidgetItem*)", typeof(void), typeof(KPageWidgetItem), item);
        }
        /// <remarks>
        ///  Inserts a new page in the model.
        /// <param> name="before" The new page will be insert before this @see KPageWidgetItem
        ///                on the same level in hierarchy.
        /// </param><param> name="widget" The widget of the page.
        /// </param><param> name="name" The name which is displayed in the navigation view.
        /// </param></remarks>        <return> The associated @see KPageWidgetItem.
        ///      </return>
        ///         <short>    Inserts a new page in the model.</short>
        public KPageWidgetItem InsertPage(KPageWidgetItem before, QWidget widget, string name) {
            return (KPageWidgetItem) interceptor.Invoke("insertPage##$", "insertPage(KPageWidgetItem*, QWidget*, const QString&)", typeof(KPageWidgetItem), typeof(KPageWidgetItem), before, typeof(QWidget), widget, typeof(string), name);
        }
        /// <remarks>
        ///  Inserts a new page in the model.
        /// <param> name="before" The new page will be insert before this @see KPageWidgetItem
        ///                on the same level in hierarchy.
        /// </param><param> name="item" The @see KPageWidgetItem which describes the page.
        ///      </param></remarks>        <short>    Inserts a new page in the model.</short>
        public void InsertPage(KPageWidgetItem before, KPageWidgetItem item) {
            interceptor.Invoke("insertPage##", "insertPage(KPageWidgetItem*, KPageWidgetItem*)", typeof(void), typeof(KPageWidgetItem), before, typeof(KPageWidgetItem), item);
        }
        /// <remarks>
        ///  Inserts a new sub page in the model.
        /// <param> name="parent" The new page will be insert as child of this @see KPageWidgetItem.
        /// </param><param> name="widget" The widget of the page.
        /// </param><param> name="name" The name which is displayed in the navigation view.
        /// </param></remarks>        <return> The associated @see KPageWidgetItem.
        ///      </return>
        ///         <short>    Inserts a new sub page in the model.</short>
        public KPageWidgetItem AddSubPage(KPageWidgetItem parent, QWidget widget, string name) {
            return (KPageWidgetItem) interceptor.Invoke("addSubPage##$", "addSubPage(KPageWidgetItem*, QWidget*, const QString&)", typeof(KPageWidgetItem), typeof(KPageWidgetItem), parent, typeof(QWidget), widget, typeof(string), name);
        }
        /// <remarks>
        ///  Inserts a new sub page in the model.
        /// <param> name="parent" The new page will be insert as child of this @see KPageWidgetItem.
        /// </param><param> name="item" The @see KPageWidgetItem which describes the page.
        ///      </param></remarks>        <short>    Inserts a new sub page in the model.</short>
        public void AddSubPage(KPageWidgetItem parent, KPageWidgetItem item) {
            interceptor.Invoke("addSubPage##", "addSubPage(KPageWidgetItem*, KPageWidgetItem*)", typeof(void), typeof(KPageWidgetItem), parent, typeof(KPageWidgetItem), item);
        }
        /// <remarks>
        ///  Removes the page associated with the given @see KPageWidgetItem.
        ///      </remarks>        <short>    Removes the page associated with the given @see KPageWidgetItem.</short>
        public void RemovePage(KPageWidgetItem item) {
            interceptor.Invoke("removePage#", "removePage(KPageWidgetItem*)", typeof(void), typeof(KPageWidgetItem), item);
        }
        /// <remarks>
        ///  These methods are reimplemented from QAbstractItemModel.
        ///      </remarks>        <short>    These methods are reimplemented from QAbstractItemModel.</short>
        [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("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("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));
        }
        /// <remarks>
        ///  Returns the @see KPageWidgetItem for a given index or 0 if the index is invalid.
        ///      </remarks>        <short>    Returns the @see KPageWidgetItem for a given index or 0 if the index is invalid.</short>
        public KPageWidgetItem Item(QModelIndex index) {
            return (KPageWidgetItem) interceptor.Invoke("item#", "item(const QModelIndex&) const", typeof(KPageWidgetItem), typeof(QModelIndex), index);
        }
        /// <remarks>
        ///  Returns the index for a given @see KPageWidgetItem. The index is invalid if the
        ///  item can't be found in the model.
        ///      </remarks>        <short>    Returns the index for a given @see KPageWidgetItem.</short>
        public QModelIndex Index(KPageWidgetItem item) {
            return (QModelIndex) interceptor.Invoke("index#", "index(const KPageWidgetItem*) const", typeof(QModelIndex), typeof(KPageWidgetItem), item);
        }
        ~KPageWidgetModel() {
            interceptor.Invoke("~KPageWidgetModel", "~KPageWidgetModel()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~KPageWidgetModel", "~KPageWidgetModel()", typeof(void));
        }
        protected new IKPageWidgetModelSignals Emit {
            get { return (IKPageWidgetModelSignals) Q_EMIT; }
        }
    }

    public interface IKPageWidgetModelSignals : IKPageModelSignals {
        /// <remarks>
        ///  This signal is emitted whenever a checkable page changes its state. @param checked is true
        ///  when the @param page is checked, or false if the @param page is unchecked.
        ///      </remarks>        <short>    This signal is emitted whenever a checkable page changes its state.</short>
        [Q_SIGNAL("void toggled(KPageWidgetItem*, bool)")]
        void Toggled(KPageWidgetItem page, bool arg2);
    }
}
