110 lines
2.5 KiB
QML
110 lines
2.5 KiB
QML
import QtQuick 2.9
|
|
import QtMultimedia 5.8
|
|
import QtQuick.Window 2.2
|
|
import QtQuick.Controls 2.2
|
|
import "."
|
|
import "./components"
|
|
import com.itsblue.speedclimbingstopwatch 1.0
|
|
|
|
Item {
|
|
id: control
|
|
property color color
|
|
property string text: qsTr("Click start to start")
|
|
property string elide
|
|
property int pixelSize: 100
|
|
property int scale: 1
|
|
|
|
property var toppadConn
|
|
property var startpadConn
|
|
property var baseConn
|
|
|
|
property double startTime: 0
|
|
property double stopTime: 0
|
|
property double stoppedTime: 0
|
|
property double reactionTime: 0
|
|
|
|
property double currTime: 0
|
|
|
|
signal stopped()
|
|
signal startCanceled(bool falseStart)
|
|
signal stateChanged(var newState)
|
|
anchors.fill: parent
|
|
state: "IDLE"
|
|
|
|
Label {
|
|
id: time
|
|
text: timerBackend.state === "STARTING" ? control.text:timerBackend.text
|
|
scale: parent.scale
|
|
anchors.centerIn: parent
|
|
font.pixelSize: parent.pixelSize
|
|
elide: parent.elide
|
|
color: appTheme.style.textColor
|
|
Behavior on text {
|
|
enabled: timerBackend.state !== "RUNNING"
|
|
FadeAnimation {
|
|
target: time
|
|
}
|
|
}
|
|
|
|
}
|
|
/*
|
|
SpeedTimerBackend {
|
|
id: timerBackend
|
|
|
|
onStateChanged: {
|
|
control.stateChanged(newState)
|
|
}
|
|
|
|
onStartCanceled: {
|
|
console.log("start cnaceled")
|
|
control.startCanceled(falseStart)
|
|
}
|
|
}*/
|
|
|
|
function getState(){
|
|
return(timerBackend.getState())
|
|
}
|
|
|
|
function setStarting(){
|
|
timerBackend.setStarting()
|
|
}
|
|
|
|
function start(inMilliSeconds){
|
|
startTimer.interval = inMilliSeconds
|
|
startTimer.start()
|
|
}
|
|
|
|
function stop(type){
|
|
timerBackend.stop(type)
|
|
}
|
|
|
|
function reset(){
|
|
timerBackend.reset()
|
|
}
|
|
|
|
function handleStartpad(){
|
|
console.log("startpad triggered")
|
|
var offset = control.startpadConn.offset
|
|
var last_pressed = control.startpadConn.lastTriggered
|
|
var trigger_time = (last_pressed + offset)
|
|
control.reactionTime = trigger_time - control.startTime
|
|
if(trigger_time - control.startTime <= 0){
|
|
stop("false")
|
|
}
|
|
}
|
|
|
|
function handleToppad(){
|
|
console.log(lastTriggered)
|
|
stop("toppad")
|
|
}
|
|
|
|
Timer {
|
|
id: startTimer
|
|
running: false
|
|
repeat: false
|
|
onTriggered: {
|
|
timerBackend.start()
|
|
console.log("started")
|
|
}
|
|
}
|
|
}
|