//Auto-generated by kalyptus. DO NOT EDIT.
namespace Qyoto {
    using System;
    /// <remarks> See <see cref="IQDragSignals"></see> for signals emitted by QDrag
    /// </remarks>
    [SmokeClass("QDrag")]
    public class QDrag : QObject, IDisposable {
        protected QDrag(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(QDrag), this);
        }
        private static SmokeInvocation staticInterceptor = null;
        static QDrag() {
            staticInterceptor = new SmokeInvocation(typeof(QDrag), null);
        }
        public QDrag(QWidget dragSource) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QDrag#", "QDrag(QWidget*)", typeof(void), typeof(QWidget), dragSource);
        }
        public void SetMimeData(QMimeData data) {
            interceptor.Invoke("setMimeData#", "setMimeData(QMimeData*)", typeof(void), typeof(QMimeData), data);
        }
        public QMimeData MimeData() {
            return (QMimeData) interceptor.Invoke("mimeData", "mimeData() const", typeof(QMimeData));
        }
        public void SetPixmap(QPixmap arg1) {
            interceptor.Invoke("setPixmap#", "setPixmap(const QPixmap&)", typeof(void), typeof(QPixmap), arg1);
        }
        public QPixmap Pixmap() {
            return (QPixmap) interceptor.Invoke("pixmap", "pixmap() const", typeof(QPixmap));
        }
        public void SetHotSpot(QPoint hotspot) {
            interceptor.Invoke("setHotSpot#", "setHotSpot(const QPoint&)", typeof(void), typeof(QPoint), hotspot);
        }
        public QPoint HotSpot() {
            return (QPoint) interceptor.Invoke("hotSpot", "hotSpot() const", typeof(QPoint));
        }
        public QWidget Source() {
            return (QWidget) interceptor.Invoke("source", "source() const", typeof(QWidget));
        }
        public QWidget Target() {
            return (QWidget) interceptor.Invoke("target", "target() const", typeof(QWidget));
        }
        public Qt.DropAction Start(uint supportedActions) {
            return (Qt.DropAction) interceptor.Invoke("start$", "start(Qt::DropActions)", typeof(Qt.DropAction), typeof(uint), supportedActions);
        }
        public Qt.DropAction Start() {
            return (Qt.DropAction) interceptor.Invoke("start", "start()", typeof(Qt.DropAction));
        }
        public Qt.DropAction Exec(uint supportedActions) {
            return (Qt.DropAction) interceptor.Invoke("exec$", "exec(Qt::DropActions)", typeof(Qt.DropAction), typeof(uint), supportedActions);
        }
        public Qt.DropAction Exec() {
            return (Qt.DropAction) interceptor.Invoke("exec", "exec()", typeof(Qt.DropAction));
        }
        public Qt.DropAction Exec(uint supportedActions, Qt.DropAction defaultAction) {
            return (Qt.DropAction) interceptor.Invoke("exec$$", "exec(Qt::DropActions, Qt::DropAction)", typeof(Qt.DropAction), typeof(uint), supportedActions, typeof(Qt.DropAction), defaultAction);
        }
        public void SetDragCursor(QPixmap cursor, Qt.DropAction action) {
            interceptor.Invoke("setDragCursor#$", "setDragCursor(const QPixmap&, Qt::DropAction)", typeof(void), typeof(QPixmap), cursor, typeof(Qt.DropAction), action);
        }
        ~QDrag() {
            interceptor.Invoke("~QDrag", "~QDrag()", typeof(void));
        }
        public new void Dispose() {
            interceptor.Invoke("~QDrag", "~QDrag()", typeof(void));
        }
        public static new string Tr(string s, string c) {
            return (string) staticInterceptor.Invoke("tr$$", "tr(const char*, const char*)", typeof(string), typeof(string), s, typeof(string), c);
        }
        public static new string Tr(string s) {
            return (string) staticInterceptor.Invoke("tr$", "tr(const char*)", typeof(string), typeof(string), s);
        }
        protected new IQDragSignals Emit {
            get { return (IQDragSignals) Q_EMIT; }
        }
    }

    public interface IQDragSignals : IQObjectSignals {
        [Q_SIGNAL("void actionChanged(Qt::DropAction)")]
        void ActionChanged(Qt.DropAction action);
        [Q_SIGNAL("void targetChanged(QWidget*)")]
        void TargetChanged(QWidget newTarget);
    }
}
