diff --git a/src/activities/drawletters/resource/A2.svg b/src/activities/drawletters/resource/A2.svg
index 2a07b7824..6b065c25f 100644
--- a/src/activities/drawletters/resource/A2.svg
+++ b/src/activities/drawletters/resource/A2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/B2.svg b/src/activities/drawletters/resource/B2.svg
index 8aba4921e..67fec967d 100644
--- a/src/activities/drawletters/resource/B2.svg
+++ b/src/activities/drawletters/resource/B2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/C2.svg b/src/activities/drawletters/resource/C2.svg
index 716638529..a2d25c62e 100644
--- a/src/activities/drawletters/resource/C2.svg
+++ b/src/activities/drawletters/resource/C2.svg
@@ -1,98 +1,109 @@
diff --git a/src/activities/drawletters/resource/D2.svg b/src/activities/drawletters/resource/D2.svg
index 01c4696ce..8d9ae5669 100644
--- a/src/activities/drawletters/resource/D2.svg
+++ b/src/activities/drawletters/resource/D2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/E2.svg b/src/activities/drawletters/resource/E2.svg
index 55f00ed4b..5fc233114 100644
--- a/src/activities/drawletters/resource/E2.svg
+++ b/src/activities/drawletters/resource/E2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/F2.svg b/src/activities/drawletters/resource/F2.svg
index 47e6e4075..7b81c291f 100644
--- a/src/activities/drawletters/resource/F2.svg
+++ b/src/activities/drawletters/resource/F2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/G2.svg b/src/activities/drawletters/resource/G2.svg
index 14d8ddc68..695b9e164 100644
--- a/src/activities/drawletters/resource/G2.svg
+++ b/src/activities/drawletters/resource/G2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/H2.svg b/src/activities/drawletters/resource/H2.svg
index 2a22cae0a..795ece6b6 100644
--- a/src/activities/drawletters/resource/H2.svg
+++ b/src/activities/drawletters/resource/H2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/I2.svg b/src/activities/drawletters/resource/I2.svg
index 854062268..a8365035e 100644
--- a/src/activities/drawletters/resource/I2.svg
+++ b/src/activities/drawletters/resource/I2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/J2.svg b/src/activities/drawletters/resource/J2.svg
index 135de59ae..73a66b5b6 100644
--- a/src/activities/drawletters/resource/J2.svg
+++ b/src/activities/drawletters/resource/J2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/K2.svg b/src/activities/drawletters/resource/K2.svg
index 45147dcc3..2871892b8 100644
--- a/src/activities/drawletters/resource/K2.svg
+++ b/src/activities/drawletters/resource/K2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/L2.svg b/src/activities/drawletters/resource/L2.svg
index b40bce98e..22071e7b4 100644
--- a/src/activities/drawletters/resource/L2.svg
+++ b/src/activities/drawletters/resource/L2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/M2.svg b/src/activities/drawletters/resource/M2.svg
index ba35d83f9..0e820f653 100644
--- a/src/activities/drawletters/resource/M2.svg
+++ b/src/activities/drawletters/resource/M2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/N2.svg b/src/activities/drawletters/resource/N2.svg
index 8c1e57e57..4947cf3e5 100644
--- a/src/activities/drawletters/resource/N2.svg
+++ b/src/activities/drawletters/resource/N2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/O2.svg b/src/activities/drawletters/resource/O2.svg
index d4000bdc9..fc729ad87 100644
--- a/src/activities/drawletters/resource/O2.svg
+++ b/src/activities/drawletters/resource/O2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/P2.svg b/src/activities/drawletters/resource/P2.svg
index b3251f17a..645e99a29 100644
--- a/src/activities/drawletters/resource/P2.svg
+++ b/src/activities/drawletters/resource/P2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/Q2.svg b/src/activities/drawletters/resource/Q2.svg
index 11477a615..e3642e2a7 100644
--- a/src/activities/drawletters/resource/Q2.svg
+++ b/src/activities/drawletters/resource/Q2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/R2.svg b/src/activities/drawletters/resource/R2.svg
index dc5b9b4b0..f45ef1b9a 100644
--- a/src/activities/drawletters/resource/R2.svg
+++ b/src/activities/drawletters/resource/R2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/S2.svg b/src/activities/drawletters/resource/S2.svg
index f8144b76f..3c529cbd0 100644
--- a/src/activities/drawletters/resource/S2.svg
+++ b/src/activities/drawletters/resource/S2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/T2.svg b/src/activities/drawletters/resource/T2.svg
index 55b036252..0402ce414 100644
--- a/src/activities/drawletters/resource/T2.svg
+++ b/src/activities/drawletters/resource/T2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/U2.svg b/src/activities/drawletters/resource/U2.svg
index 4ff5b8acb..b6866c413 100644
--- a/src/activities/drawletters/resource/U2.svg
+++ b/src/activities/drawletters/resource/U2.svg
@@ -1,99 +1,108 @@
diff --git a/src/activities/drawletters/resource/V2.svg b/src/activities/drawletters/resource/V2.svg
index 4defde7a8..38bf69207 100644
--- a/src/activities/drawletters/resource/V2.svg
+++ b/src/activities/drawletters/resource/V2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/W2.svg b/src/activities/drawletters/resource/W2.svg
index 6328729e9..dece32089 100644
--- a/src/activities/drawletters/resource/W2.svg
+++ b/src/activities/drawletters/resource/W2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/X2.svg b/src/activities/drawletters/resource/X2.svg
index 229730403..8ad1f7ace 100644
--- a/src/activities/drawletters/resource/X2.svg
+++ b/src/activities/drawletters/resource/X2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/Y2.svg b/src/activities/drawletters/resource/Y2.svg
index c08e4e2a6..5757258ba 100644
--- a/src/activities/drawletters/resource/Y2.svg
+++ b/src/activities/drawletters/resource/Y2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawletters/resource/Z2.svg b/src/activities/drawletters/resource/Z2.svg
index cb17c985f..aff014a98 100644
--- a/src/activities/drawletters/resource/Z2.svg
+++ b/src/activities/drawletters/resource/Z2.svg
@@ -1,98 +1,107 @@
diff --git a/src/activities/drawnumbers/resource/background.svg b/src/activities/drawnumbers/resource/background.svg
index 0963300d0..b2ce6f8ca 100644
--- a/src/activities/drawnumbers/resource/background.svg
+++ b/src/activities/drawnumbers/resource/background.svg
@@ -1,98 +1,100 @@
diff --git a/src/activities/number_sequence/NumberSequence.qml b/src/activities/number_sequence/NumberSequence.qml
index 355ebbd4e..a7c0acc9a 100644
--- a/src/activities/number_sequence/NumberSequence.qml
+++ b/src/activities/number_sequence/NumberSequence.qml
@@ -1,256 +1,260 @@
/* GCompris - NumberSequence.qml
*
* Copyright (C) 2014 Emmanuel Charruau
*
* Authors:
* Olivier Ponchaut (GTK+ version)
* Emmanuel Charruau (Qt Quick port)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see .
*/
import QtQuick 2.6
import GCompris 1.0
import "../../core"
import "."
import "number_sequence.js" as Activity
import "number_sequence_dataset.js" as Dataset
ActivityBase {
id: activity
property string mode: "number_sequence"
property var dataset: Dataset
property real pointImageOpacity: 1.0
property string url: "qrc:/gcompris/src/activities/number_sequence/resource/"
onStart: focus = true
onStop: {}
pageComponent: Item {
id: background
anchors.fill: parent
signal start
signal stop
Component.onCompleted: {
activity.start.connect(start)
activity.stop.connect(stop)
}
// Add here the QML items you need to access in javascript
QtObject {
id: items
property Item main: activity.main
property alias background: background
property alias bar: bar
property alias bonus: bonus
property GCAudio audioEffects: activity.audioEffects
property GCAudio audioVoices: activity.audioVoices
property alias pointImageRepeater: pointImageRepeater
property alias segmentsRepeater: segmentsRepeater
property alias imageBack: imageBack
property alias imageBack2: imageBack2
property int pointIndexToClick
}
onStart: { Activity.start(items,mode,dataset,url) }
onStop: { Activity.stop() }
Image {
id: imageBack
anchors.top: parent.top
width: background.width
height: background.height
+ sourceSize.width: background.witdh
+ sourceSize.height: background.height
}
Image {
id: imageBack2
anchors.top: imageBack.top
width: background.width
height: background.height
+ sourceSize.width: background.witdh
+ sourceSize.height: background.height
}
Repeater {
id: segmentsRepeater
Rectangle {
id: line
opacity: 0
color: "black"
transformOrigin: Item.TopLeft
x: modelData[0] * background.width / 800
y: modelData[1] * background.height / 520
property var x2: modelData[2] * background.width / 800
property var y2: modelData[3] * background.height / 520
width: Math.sqrt(Math.pow(x - x2, 2) + Math.pow(y- y2, 2))
height: 3 * ApplicationInfo.ratio
rotation: (Math.atan((y2 - y)/(x2-x)) * 180 / Math.PI) + (((y2-y) < 0 && (x2-x) < 0) * 180) + (((y2-y) >= 0 && (x2-x) < 0) * 180)
}
}
Item {
id: playArea
anchors.fill: parent
Repeater {
id: pointImageRepeater
Image {
id: pointImage
source: Activity.url + (highlight ?
(pointImageOpacity ? "bluepoint.svg" : "bluepointHighlight.svg") :
markedAsPointInternal ? "blackpoint.svg" : "greenpoint.svg")
sourceSize.height: background.height / 25 //to change the size of dots
x: modelData[0] * background.width / 801 - sourceSize.height/2
y: modelData[1] * background.height / 521 - sourceSize.height/2
z: items.pointIndexToClick == index ? 1000 : index
// only hide last point for clickanddraw and number_sequence
// as the last point is also the first point
visible: (mode=="clickanddraw" || mode=="number_sequence") &&
index == pointImageRepeater.count - 1 &&
items.pointIndexToClick == 0 ? false : true
function drawSegment() {
Activity.drawSegment(index)
}
property bool highlight: false
// draw a point instead of hiding the clicked node if it is
// the first point of the current line to draw
// (helpful to know where the line starts)
property bool markedAsPointInternal: markedAsPoint && items.pointIndexToClick == index+1
property bool markedAsPoint: false
scale: markedAsPointInternal ? 0.2 : 1
opacity: index >= items.pointIndexToClick || markedAsPointInternal ? 1 : 0
GCText {
id: pointNumberText
opacity: pointImageOpacity
text: index + 1
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
fontSize: 11
font.weight: Font.DemiBold
style: Text.Outline
styleColor: "black"
color: "white"
}
ParallelAnimation {
id: anim
running: pointImageOpacity == 0 && items.pointIndexToClick == index
loops: Animation.Infinite
SequentialAnimation {
NumberAnimation {
target: pointImage
property: "rotation"
from: -150; to: 150
duration: 3000
easing.type: Easing.InOutQuad
}
NumberAnimation {
target: pointImage
property: "rotation"
from: 150; to: -150
duration: 3000
easing.type: Easing.InOutQuad
}
}
SequentialAnimation {
NumberAnimation {
target: pointImage
property: "scale"
from: 1; to: 1.5
duration: 1500
easing.type: Easing.InOutQuad
}
NumberAnimation {
target: pointImage
property: "scale"
from: 1.5; to: 1
duration: 1500
easing.type: Easing.InOutQuad
}
NumberAnimation {
target: pointImage
property: "scale"
from: 1; to: 1.5
duration: 1500
easing.type: Easing.InOutQuad
}
NumberAnimation {
target: pointImage
property: "scale"
from: 1.5; to: 1
duration: 1500
easing.type: Easing.InOutQuad
}
}
}
}
}
}
MultiPointTouchArea {
anchors.fill: parent
minimumTouchPoints: 1
maximumTouchPoints: 1
z: 100
function checkPoints(touchPoints) {
for(var i in touchPoints) {
var touch = touchPoints[i]
for(var p = 0; p < pointImageRepeater.count; p++) {
var part = pointImageRepeater.itemAt(p)
// Could not make it work with the item.contains() api
if(touch.x > part.x && touch.x < part.x + part.width &&
touch.y > part.y && touch.y < part.y + part.height) {
part.drawSegment()
}
}
}
}
onPressed: {
checkPoints(touchPoints)
items.audioEffects.play('qrc:/gcompris/src/activities/drawnletters/resource/buttonclick.wav')
}
onTouchUpdated: {
checkPoints(touchPoints)
}
}
DialogHelp {
id: dialogHelp
onClose: home()
}
Bar {
id: bar
content: BarEnumContent { value: help | home | level }
onHelpClicked: {
displayDialog(dialogHelp)
}
onPreviousLevelClicked: Activity.previousLevel()
onNextLevelClicked: Activity.nextLevel()
onHomeClicked: activity.home()
}
Bonus {
id: bonus
Component.onCompleted: win.connect(Activity.nextLevel)
}
}
}