//Auto-generated by kalyptus. DO NOT EDIT.
namespace Akonadi {
    using Kimono;
    using System;
    using Qyoto;
    /// <remarks>
    ///  The widget is listening on the dbus for changes, so the
    ///  widget is updated automatically as soon as new agent types
    ///  are added to or removed from the system.
    ///  @code
    ///  MyWidget.MyWidget( QWidget parent )
    ///  {
    ///    QVBoxLayout layout = new QVBoxLayout( this );
    ///    mAgentTypeWidget = new Akonadi.AgentTypeWidget( this );
    ///    layout.AddWidget( mAgentTypeWidget );
    ///    connect( mAgentTypeWidget, SIGNAL("currentChanged( Akonadi.AgentType&, Akonadi.AgentType& )"),
    ///             this, SLOT("slotTypeChanged( Akonadi.AgentType& )") );
    ///  }
    ///  ...
    ///  MyWidget.SlotTypeChanged( Akonadi.AgentType &current, Akonadi.AgentType& )
    ///  {
    ///    qDebug() << "New selected type:" << current.name();
    ///  }
    ///  @endcode
    ///  See <see cref="IAgentTypeWidgetSignals"></see> for signals emitted by AgentTypeWidget
    /// </remarks>        <author> Tobias Koenig <tokoe@kde.org>
    ///  </author>
    ///         <short> Provides a widget that lists all available agent types. </short>
    [SmokeClass("Akonadi::AgentTypeWidget")]
    public class AgentTypeWidget : QWidget, IDisposable {
        protected AgentTypeWidget(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(AgentTypeWidget), this);
        }
        /// <remarks>
        ///  Creates a new agent type widget.
        /// <param> name="parent" The parent widget.
        ///      </param></remarks>        <short>    Creates a new agent type widget.</short>
        public AgentTypeWidget(QWidget parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("AgentTypeWidget#", "AgentTypeWidget(QWidget*)", typeof(void), typeof(QWidget), parent);
        }
        public AgentTypeWidget() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("AgentTypeWidget", "AgentTypeWidget()", typeof(void));
        }
        /// <remarks>
        ///  Returns the current agent type or an invalid agent type
        ///  if no agent type is selected.
        ///      </remarks>        <short>    Returns the current agent type or an invalid agent type  if no agent type is selected.</short>
        public Akonadi.AgentType CurrentAgentType() {
            return (Akonadi.AgentType) interceptor.Invoke("currentAgentType", "currentAgentType() const", typeof(Akonadi.AgentType));
        }
        /// <remarks>
        ///  Returns the agent filter proxy model, use this to filter by
        ///  agent mimetype or capabilities.
        ///      </remarks>        <short>    Returns the agent filter proxy model, use this to filter by  agent mimetype or capabilities.</short>
        public Akonadi.AgentFilterProxyModel AgentFilterProxyModel() {
            return (Akonadi.AgentFilterProxyModel) interceptor.Invoke("agentFilterProxyModel", "agentFilterProxyModel() const", typeof(Akonadi.AgentFilterProxyModel));
        }
        ~AgentTypeWidget() {
            interceptor.Invoke("~AgentTypeWidget", "~AgentTypeWidget()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~AgentTypeWidget", "~AgentTypeWidget()", typeof(void));
        }
        protected new IAgentTypeWidgetSignals Emit {
            get { return (IAgentTypeWidgetSignals) Q_EMIT; }
        }
    }

    public interface IAgentTypeWidgetSignals : IQWidgetSignals {
        /// <remarks>
        ///  This signal is emitted whenever the current agent type changes.
        /// <param> name="current" The current agent type.
        /// </param><param> name="previous" The previous agent type.
        ///      </param></remarks>        <short>    This signal is emitted whenever the current agent type changes.</short>
        [Q_SIGNAL("void currentChanged(Akonadi::AgentType, Akonadi::AgentType)")]
        void CurrentChanged(Akonadi.AgentType current, Akonadi.AgentType previous);
    }
}
