|
1 var itemComponent = null; |
|
2 var draggedItem = null; |
|
3 var startingMouse; |
|
4 var posnInWindow; |
|
5 |
|
6 function startDrag(mouse) |
|
7 { |
|
8 posnInWindow = paletteItem.mapToItem(window, 0, 0); |
|
9 startingMouse = { x: mouse.x, y: mouse.y } |
|
10 loadComponent(); |
|
11 } |
|
12 |
|
13 //Creation is split into two functions due to an asynchronous wait while |
|
14 //possible external files are loaded. |
|
15 |
|
16 function loadComponent() { |
|
17 if (itemComponent != null) { // component has been previously loaded |
|
18 createItem(); |
|
19 return; |
|
20 } |
|
21 |
|
22 itemComponent = Qt.createComponent(paletteItem.componentFile); |
|
23 if (itemComponent.status == Component.Loading) //Depending on the content, it can be ready or error immediately |
|
24 component.statusChanged.connect(createItem); |
|
25 else |
|
26 createItem(); |
|
27 } |
|
28 |
|
29 function createItem() { |
|
30 if (itemComponent.status == Component.Ready && draggedItem == null) { |
|
31 draggedItem = itemComponent.createObject(window); |
|
32 draggedItem.image = paletteItem.image; |
|
33 draggedItem.x = posnInWindow.x; |
|
34 draggedItem.y = posnInWindow.y; |
|
35 draggedItem.z = 3; // make sure created item is above the ground layer |
|
36 } else if (itemComponent.status == Component.Error) { |
|
37 draggedItem = null; |
|
38 console.log("error creating component"); |
|
39 console.log(itemComponent.errorString()); |
|
40 } |
|
41 } |
|
42 |
|
43 function continueDrag(mouse) |
|
44 { |
|
45 if (draggedItem == null) |
|
46 return; |
|
47 |
|
48 draggedItem.x = mouse.x + posnInWindow.x - startingMouse.x; |
|
49 draggedItem.y = mouse.y + posnInWindow.y - startingMouse.y; |
|
50 } |
|
51 |
|
52 function endDrag(mouse) |
|
53 { |
|
54 if (draggedItem == null) |
|
55 return; |
|
56 |
|
57 if (draggedItem.x + draggedItem.width > toolbox.x) { //Don't drop it in the toolbox |
|
58 draggedItem.destroy(); |
|
59 draggedItem = null; |
|
60 } else { |
|
61 draggedItem.created = true; |
|
62 draggedItem = null; |
|
63 } |
|
64 } |
|
65 |