diff options
author | Warwick Allison <warwick.allison@nokia.com> | 2010-02-04 04:56:50 (GMT) |
---|---|---|
committer | Warwick Allison <warwick.allison@nokia.com> | 2010-02-04 04:56:50 (GMT) |
commit | 7fec7ff568659c3816ce26d2d82d59dd372f1166 (patch) | |
tree | c2546e401f13ba5c55e3311744d83fa68e46f165 /examples/declarative/dynamic/qml/itemCreation.js | |
parent | 5783f98ce5e243afbbd4c6a68c80d2dd959520e0 (diff) | |
parent | f7dfce110c96ef33200abf2dd93b86d3853095e5 (diff) | |
download | Qt-7fec7ff568659c3816ce26d2d82d59dd372f1166.zip Qt-7fec7ff568659c3816ce26d2d82d59dd372f1166.tar.gz Qt-7fec7ff568659c3816ce26d2d82d59dd372f1166.tar.bz2 |
Merge branch 'kinetic-declarativeui' of git://git-nokia.trolltech.com.au/qtsoftware/qt/kinetic
Conflicts:
src/xmlpatterns/type/qprimitives_p.h
tools/linguist/lupdate/main.cpp
Diffstat (limited to 'examples/declarative/dynamic/qml/itemCreation.js')
-rw-r--r-- | examples/declarative/dynamic/qml/itemCreation.js | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/examples/declarative/dynamic/qml/itemCreation.js b/examples/declarative/dynamic/qml/itemCreation.js new file mode 100644 index 0000000..ccc03aa --- /dev/null +++ b/examples/declarative/dynamic/qml/itemCreation.js @@ -0,0 +1,82 @@ +var itemComponent = null; +var draggedItem = null; +var startingMouse; +var startingZ; +//Until QT-2385 is resolved we need to convert to scene coordinates manually +var xOffset; +var yOffset; +function setSceneOffset() +{ + xOffset = 0; + yOffset = 0; + var p = itemButton; + while(p != window){ + xOffset += p.x; + yOffset += p.y; + p = p.parent; + } +} + +function startDrag(mouse) +{ + setSceneOffset(); + startingMouse = { x: mouse.x, y: mouse.y } + loadComponent(); +} + +//Creation is split into two functions due to an asyncronous wait while +//possible external files are loaded. + +function loadComponent() { + if (itemComponent != null) //Already loaded the component + createItem(); + + itemComponent = createComponent(itemButton.file); + //print(itemButton.file) + if(itemComponent.isLoading){ + component.statusChanged.connect(finishCreation); + }else{//Depending on the content, it can be ready or error immediately + createItem(); + } +} + +function createItem() { + if (itemComponent.isReady && draggedItem == null) { + draggedItem = itemComponent.createObject(); + draggedItem.parent = window; + draggedItem.image = itemButton.image; + draggedItem.x = xOffset; + draggedItem.y = yOffset; + startingZ = draggedItem.z; + draggedItem.z = 4;//On top + } else if (itemComponent.isError) { + draggedItem = null; + print("error creating component"); + print(component.errorsString()); + } +} + +function moveDrag(mouse) +{ + if(draggedItem == null) + return; + + draggedItem.x = mouse.x + xOffset - startingMouse.x; + draggedItem.y = mouse.y + yOffset - startingMouse.y; +} + +function endDrag(mouse) +{ + if(draggedItem == null) + return; + + if(draggedItem.x + draggedItem.width > toolbox.x){ //Don't drop it in the toolbox + draggedItem.destroy(); + draggedItem = null; + }else{ + draggedItem.z = startingZ; + draggedItem.created = true; + draggedItem = null; + } +} + |