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 |
|
---|