//Auto-generated by kalyptus. DO NOT EDIT.
namespace Akonadi {
    using Kimono;
    using System;
    using Qyoto;
    /// <remarks>
    ///  This class encapsulates the procedure of creating a new agent instance
    ///  and optionally configuring it immediately.
    ///  @code
    ///  MyClass.MyClass( QWidget parent )
    ///  {
    ///    // Get agent type object
    ///    Akonadi.AgentType type = Akonadi.AgentManager.Self().Type( "akonadi_vcard_resource" );
    ///    Akonadi.AgentInstanceCreateJob job = new Akonadi.AgentInstanceCreateJob( type );
    ///    connect( job, SIGNAL("result( KJob  )"),
    ///             this, SLOT("slotCreated( KJob  )") );
    ///    // use this widget as parent for the config dialog
    ///    job.Configure( this );
    ///    job.Start();
    ///  }
    ///  ...
    ///  void MyClass.SlotCreated( KJob job )
    ///  {
    ///    Akonadi.AgentInstanceCreateJob createJob = static_cast<Akonadi.AgentInstanceCreateJob>( job );
    ///    qDebug() << "Created agent instance:" << createJob.Instance().identifier();
    ///  }
    ///  @endcode
    /// </remarks>        <author> Volker Krause <vkrause@kde.org>
    ///  </author>
    ///         <short> Job for creating new agent instances. </short>
    [SmokeClass("Akonadi::AgentInstanceCreateJob")]
    public class AgentInstanceCreateJob : KJob, IDisposable {
        protected AgentInstanceCreateJob(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(AgentInstanceCreateJob), this);
        }
        /// <remarks>
        ///  Create a new agent instance creation job.
        /// <param> name="type" The type of the agent to create.
        /// </param><param> name="parent" The parent object.
        ///      </param></remarks>        <short>    Create a new agent instance creation job.</short>
        public AgentInstanceCreateJob(Akonadi.AgentType type, QObject parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("AgentInstanceCreateJob##", "AgentInstanceCreateJob(const Akonadi::AgentType&, QObject*)", typeof(void), typeof(Akonadi.AgentType), type, typeof(QObject), parent);
        }
        public AgentInstanceCreateJob(Akonadi.AgentType type) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("AgentInstanceCreateJob#", "AgentInstanceCreateJob(const Akonadi::AgentType&)", typeof(void), typeof(Akonadi.AgentType), type);
        }
        /// <remarks>
        ///  Setup the job to show agent configuration dialog once the agent instance
        ///  has been successfully started.
        /// <param> name="parent" The parent window for the configuration dialog.
        ///      </param></remarks>        <short>    Setup the job to show agent configuration dialog once the agent instance  has been successfully started.</short>
        public void Configure(QWidget parent) {
            interceptor.Invoke("configure#", "configure(QWidget*)", typeof(void), typeof(QWidget), parent);
        }
        public void Configure() {
            interceptor.Invoke("configure", "configure()", typeof(void));
        }
        /// <remarks>
        ///  Returns the AgentInstance object of the newly created agent instance.
        ///      </remarks>        <short>    Returns the AgentInstance object of the newly created agent instance.</short>
        public Akonadi.AgentInstance Instance() {
            return (Akonadi.AgentInstance) interceptor.Invoke("instance", "instance() const", typeof(Akonadi.AgentInstance));
        }
        /// <remarks>
        ///  Starts the instance creation.
        ///      </remarks>        <short>    Starts the instance creation.</short>
        [SmokeMethod("start()")]
        public override void Start() {
            interceptor.Invoke("start", "start()", typeof(void));
        }
        ~AgentInstanceCreateJob() {
            interceptor.Invoke("~AgentInstanceCreateJob", "~AgentInstanceCreateJob()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~AgentInstanceCreateJob", "~AgentInstanceCreateJob()", typeof(void));
        }
        protected new IAgentInstanceCreateJobSignals Emit {
            get { return (IAgentInstanceCreateJobSignals) Q_EMIT; }
        }
    }

    public interface IAgentInstanceCreateJobSignals : IKJobSignals {
    }
}
