63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
var itemComponent = null;
|
|
var draggedItem = null;
|
|
var startingMouse;
|
|
var posnInWindow;
|
|
|
|
function startDrag(mouse)
|
|
{
|
|
posnInWindow = paletteItem.mapToItem(window, 0, 0);
|
|
startingMouse = { x: mouse.x, y: mouse.y }
|
|
loadComponent();
|
|
}
|
|
|
|
//Creation is split into two functions due to an asynchronous wait while
|
|
//possible external files are loaded.
|
|
|
|
function loadComponent() {
|
|
if (itemComponent != null) { // component has been previously loaded
|
|
createItem();
|
|
return;
|
|
}
|
|
|
|
itemComponent = Qt.createComponent(paletteItem.componentFile);
|
|
if (itemComponent.status == Component.Loading) //Depending on the content, it can be ready or error immediately
|
|
component.statusChanged.connect(createItem);
|
|
else
|
|
createItem();
|
|
}
|
|
|
|
function createItem() {
|
|
if (itemComponent.status == Component.Ready && draggedItem == null) {
|
|
draggedItem = itemComponent.createObject(window, {"image": paletteItem.image, "x": posnInWindow.x, "y": posnInWindow.y, "z": 3});
|
|
// make sure created item is above the ground layer
|
|
} else if (itemComponent.status == Component.Error) {
|
|
draggedItem = null;
|
|
console.log("error creating component");
|
|
console.log(itemComponent.errorString());
|
|
}
|
|
}
|
|
|
|
function continueDrag(mouse)
|
|
{
|
|
if (draggedItem == null)
|
|
return;
|
|
|
|
draggedItem.x = mouse.x + posnInWindow.x - startingMouse.x;
|
|
draggedItem.y = mouse.y + posnInWindow.y - startingMouse.y;
|
|
}
|
|
|
|
function endDrag(mouse)
|
|
{
|
|
if (draggedItem == null)
|
|
return;
|
|
|
|
if (draggedItem.y < toolbox.height) { //Don't drop it in the toolbox
|
|
draggedItem.destroy();
|
|
draggedItem = null;
|
|
} else {
|
|
draggedItem.created = true;
|
|
draggedItem = null;
|
|
}
|
|
}
|
|
|