summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLasse Räihä <lasse.raiha@digia.com>2013-04-17 11:07:24 +0300
committerLasse Räihä <lasse.raiha@digia.com>2013-04-17 11:18:55 +0300
commit1d454ee835695f14b438ce0e39e29b363ce1d58d (patch)
tree60959a7021603faf43b6b852a1df5d10004e3112
parent42f2f5d7abe5ea0baa2fbad7b91c5c11629d2ded (diff)
Fixed some little bit style bugs.
Change-Id: I6bddf1b627dbe60fc5f8d0df04758f370a00b7f4 Reviewed-by: Kimmo Ollila <kimmo.ollila@digia.com>
-rw-r--r--QtDemo/qml/QtDemo/engine.js42
-rw-r--r--QtDemo/qml/QtDemo/main.qml136
2 files changed, 84 insertions, 94 deletions
diff --git a/QtDemo/qml/QtDemo/engine.js b/QtDemo/qml/QtDemo/engine.js
index e0e629a..e978406 100644
--- a/QtDemo/qml/QtDemo/engine.js
+++ b/QtDemo/qml/QtDemo/engine.js
@@ -46,9 +46,7 @@ function createNew(x,y,angle,borderColor,scale,url,device){
object.device = device
object.rotation = angle
object.scale = scale
- object.uid = objects.length+1 //TODO make unique
- //in future objects will also
- //get destroyed and re-created
+ object.uid = objects.length+1
object.borderColor = borderColor
object.x = x-object.width/2
object.y = y-object.height/2
@@ -86,8 +84,17 @@ function lookForSlides(x,y,angle){
}
function loadCurrentDemo(){
- if (currentDemoId != -1){
- objects[currentDemoId].loadDemo();
+
+ // Load current demo and release all others possible running demos
+ if (currentDemoId != -1) {
+ for (var i=0; i < objects.length; i++){
+ if (currentDemoId == i){
+ objects[currentDemoId].loadDemo();
+ }
+ else {
+ objects[i].releaseDemo();
+ }
+ }
}
}
@@ -95,20 +102,17 @@ function selectTarget(uid){
var idx = -1;
- for (var i=0; i < objects.length; i++){
- if (uid && objects[i].uid === uid){
- idx = i
- } else {
- objects[i].releaseDemo();
- }
- }
- if (idx !== -1){
- currentDemoId = idx
- return {"x": positions[idx].x, "y": positions[idx].y, "angle": positions[idx].angle, "scale": positions[idx].scale}
+ for (var i=0; i < objects.length; i++){
+ if (uid && objects[i].uid === uid){
+ idx = i
+ } else {
+ objects[i].releaseDemo();
}
+ }
+ if (idx !== -1){
+ currentDemoId = idx
+ return {"x": positions[idx].x, "y": positions[idx].y, "angle": positions[idx].angle, "scale": positions[idx].scale}
+ }
- //randomly select new target for now
- idx = Math.floor(Math.random()*positions.length)
- currentDemoId = idx //objects[idx].loadDemo();
- return {"x": positions[idx].x, "y": positions[idx].y, "angle": positions[idx].angle, "scale": positions[idx].scale}
+ return null;
}
diff --git a/QtDemo/qml/QtDemo/main.qml b/QtDemo/qml/QtDemo/main.qml
index 12296ff..80940cc 100644
--- a/QtDemo/qml/QtDemo/main.qml
+++ b/QtDemo/qml/QtDemo/main.qml
@@ -28,88 +28,59 @@ Rectangle{
MouseArea{
id: worldMouseArea
- enabled: !zoomAnimation.running && !zoomFlyByAnimation.running
-
- property int startX: 0
- property int startY: 0
+ anchors.fill: parent
property int oldX: 0
property int oldY: 0
-
property bool panning: false
- //property bool flicking: false
-
- anchors.fill: parent
-
- onDoubleClicked: {
- //to initial state
- canvas.xOffset = 0
- canvas.yOffset = 0
- canvas.rotationOriginX = 0
- canvas.rotationOriginY = 0
- canvas.angle = 0
- canvas.zoomInTarget = 0.2
- zoomAnimation.restart()
- }
+ onReleased: {
+ // Check the point only if we didn't move the mouse
+ if (!panning) {
+ var target = null;
- onClicked: {
- print ("MOUSEAREA CLICKED!: "+mouse.x +", "+mouse.y)
- var target = null;
- var velocity = 0;
+ // Check if there is target under mouse.
+ if (!target){
- panning = false;
+ var object = mapToItem(canvas, mouse.x, mouse.y)
+ var item = canvas.childAt(object.x,object.y)
- if (!target){
-
- var object = mapToItem(canvas, mouse.x, mouse.y)
- var item = canvas.childAt(object.x,object.y)
-
- if (item && item.objectName === 'slide') {
- target = Engine.selectTarget(item.uid)
- } else {
- //select random target for now...
- //target = Engine.selectTarget(null)
+ if (item && item.objectName === 'slide') {
+ target = Engine.selectTarget(item.uid)
+ }
}
- }
-
- if (!target) return
- canvas.xOffset = -target.x
- canvas.yOffset = -target.y
- canvas.rotationOriginX = target.x
- canvas.rotationOriginY = target.y
- canvas.angle = -target.angle
- canvas.zoomOutTarget = .4
-
- canvas.zoomInTarget = 1.0/(target.scale)
-
- //zoomFlyByAnimation.restart()
- zoomAnimation.restart()
+ // If we found target, go to the target
+ if (target)
+ canvas.goTo(target)
+ else // If not target under mouse -> go home
+ canvas.goHome()
+ }
+ panning = false
}
onPressed: {
- startX = mouse.x
- startY = mouse.y
+ // Save mouse state
oldX = mouse.x
oldY = mouse.y
- //flicking = true
- //flickTimer.restart()
}
onPositionChanged: {
- //if (!panning && (Math.abs(mouse.x-startX) >20 || Math.abs(mouse.x-startX) >20)){
- panning= true
- //}
+ var dx = mouse.x - oldX;
+ var dy = mouse.y - oldY;
- canvas.xOffset+=(mouse.x - oldX)
- canvas.yOffset+=(mouse.y - oldY)
+ if (!panning && (Math.abs(dx) > 1 || Math.abs(dy) > 1))
+ panning=true;
- oldX = mouse.x
- oldY = mouse.y
- }
+ oldX = mouse.x;
+ oldY = mouse.y;
- //onFlickingChanged: print ("Flicking changed to: "+flicking)
+ if (!zoomAnimation.running)
+ {
+ canvas.xOffset += dx;
+ canvas.yOffset += dy;
+ }
+ }
}
Item{
@@ -127,7 +98,7 @@ Rectangle{
pinch.maximumScale: 5
pinch.maximumRotation: 360
pinch.minimumRotation: -360
- enabled: !zoomAnimation.running && !zoomFlyByAnimation.running
+ enabled: !zoomAnimation.running
property bool pinching: false
@@ -137,10 +108,10 @@ Rectangle{
pinchProxy.scale = canvas.scalingFactor
if (canvas.scalingFactor>1){
- var object = mapToItem(canvas, pinch.center.x, pinch.center.y)
+ var object = mapToItem(canvas, pinch.center.x, pinch.center.y)
- canvas.rotationOriginX = object.x
- canvas.rotationOriginY = object.y
+ canvas.rotationOriginX = object.x
+ canvas.rotationOriginY = object.y
}
}
onPinchFinished: pinching = false;
@@ -165,6 +136,30 @@ Rectangle{
property real rotationOriginX
property real rotationOriginY
+ function goHome()
+ {
+ xOffset = 0
+ yOffset = 0
+ rotationOriginX = 0
+ rotationOriginY = 0
+ angle = 0
+ zoomInTarget = 0.2
+
+ zoomAnimation.restart();
+ }
+ function goTo(target)
+ {
+ xOffset = -target.x
+ yOffset = -target.y
+ rotationOriginX = target.x
+ rotationOriginY = target.y
+ angle = -target.angle
+ zoomOutTarget = .4
+ zoomInTarget = 1.0/(target.scale)
+
+ zoomAnimation.restart()
+ }
+
Behavior on angle {
RotationAnimation{
duration: Style.APP_ANIMATION_DELAY
@@ -214,7 +209,7 @@ Rectangle{
width: Style.LOGO_WIDTH
height: Style.LOGO_HEIGHT
sourceSize: Qt.size(Style.LOGO_WIDTH, Style.LOGO_HEIGHT)
- smooth: !zoomFlyByAnimation.running
+ smooth: !zoomAnimation.running
opacity: .0
Behavior on opacity {
SequentialAnimation{
@@ -244,17 +239,8 @@ Rectangle{
}
SequentialAnimation{
- id: zoomFlyByAnimation
- NumberAnimation { target: canvas; property: "scalingFactor"; duration: Style.APP_ANIMATION_DELAY/2; to:canvas.zoomOutTarget; easing.type: Easing.OutCubic }
- NumberAnimation { target: canvas; property: "scalingFactor"; duration: Style.APP_ANIMATION_DELAY/2; to:canvas.zoomInTarget; easing.type: Easing.InCubic }
- //NumberAnimation { target: canvas; property: "scalingFactor"; duration: 600; to:canvas.zoomInTarget; easing.type: Easing.OutBounce }
- }
-
- SequentialAnimation{
id: zoomAnimation
- alwaysRunToEnd: true
NumberAnimation { target: canvas; property: "scalingFactor"; duration: Style.APP_ANIMATION_DELAY; to:canvas.zoomInTarget }
- onStarted: zoomFlyByAnimation.stop()
onRunningChanged: {
if (!running && canvas.zoomInTarget !== .2){
print ("zoomanimation calls loaddemo")