examples/declarative/toys/dynamicscene/qml/itemCreation.js
changeset 30 5dc02b23752f
equal deleted inserted replaced
29:b72c6db6890b 30:5dc02b23752f
       
     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