source: trunk/examples/declarative/toys/dynamicscene/qml/itemCreation.js@ 846

Last change on this file since 846 was 846, checked in by Dmitry A. Kuminov, 14 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

File size: 1.8 KB
Line 
1var itemComponent = null;
2var draggedItem = null;
3var startingMouse;
4var posnInWindow;
5
6function 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
16function 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
29function 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
43function 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
52function 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
Note: See TracBrowser for help on using the repository browser.