#include "DoricDraggableNode.h"

QQuickItem *DoricDraggableNode::build() {
  QQmlComponent component(getContext()->getQmlEngine());

  const QUrl url(QStringLiteral("qrc:/doric/qml/draggable.qml"));
  component.loadUrl(url);

  if (component.isError()) {
    qCritical() << component.errorString();
  }

  QQuickItem *item = qobject_cast<QQuickItem *>(component.create());
  this->createLayouts(item);

  item->setProperty("wrapper", QString::number((qint64)this));
  return item;
}

void DoricDraggableNode::blend(QQuickItem *view, QString name,
                               QJsonValue prop) {
  if (name == "onDrag") {
    onDragFunction = prop.toString();
  } else {
    DoricStackNode::blend(view, name, prop);
  }
}

void DoricDraggableNode::onDrag(double x, double y) {
  getLayouts()->setMarginLeft(x);
  getLayouts()->setMarginTop(y);
  QVariantList args;
  args.append(x);
  args.append(y);
  callJSResponse(onDragFunction, args);
}