Index: sources/gui/qml/compounds/AutoStepController.qml =================================================================== diff -u -r628b49d35ec2f39863c4de4956a05f662f6e046a -ra8a42037ec8a5b2a5057c8dbb0f6cc079672b7fe --- sources/gui/qml/compounds/AutoStepController.qml (.../AutoStepController.qml) (revision 628b49d35ec2f39863c4de4956a05f662f6e046a) +++ sources/gui/qml/compounds/AutoStepController.qml (.../AutoStepController.qml) (revision a8a42037ec8a5b2a5057c8dbb0f6cc079672b7fe) @@ -9,22 +9,53 @@ height : 35 + onIsPlayingChanged: if ( ! isPlaying ) { refresh() } + signal triggered() + function refresh() { + _stepTimer.running = false + _stepTimer.running = true // restart timer + _progressAnim.restart() + } + Timer { id: _stepTimer interval : _root.interval repeat : true running : _root.isPlaying && _root.visible - onTriggered : _root.triggered() + onTriggered : { + _progressAnim.restart() + _root.triggered() + } } IconButton { id : _button anchors.verticalCenter : _root.verticalCenter iconImageSource : _root.isPlaying ? "qrc:/images/iPause" : "qrc:/images/iPlay" isDefault : true - + borderColor: Colors.transparent onClicked : _root.isPlaying = ! _root.isPlaying + + ProgressCircle { id: _progress + anchors.fill : parent + diameter : _button.width + minimum : 0 + maximum : 100 + thickness : 4 + visible : _root.isPlaying + color : Colors.statusTextPaused + circleShadowColor : Colors.transparent + + // Smooth progress animation + NumberAnimation on value { id: _progressAnim + from : 0 + to : 100 + duration: _stepTimer.interval + running : _stepTimer.running + loops : Animation.Infinite + } + } } Text { id: _helpText Index: sources/gui/qml/compounds/InstructionView.qml =================================================================== diff -u -rac81e21684bfb1c72b8ef86bfeda04e174e5066e -ra8a42037ec8a5b2a5057c8dbb0f6cc079672b7fe --- sources/gui/qml/compounds/InstructionView.qml (.../InstructionView.qml) (revision ac81e21684bfb1c72b8ef86bfeda04e174e5066e) +++ sources/gui/qml/compounds/InstructionView.qml (.../InstructionView.qml) (revision a8a42037ec8a5b2a5057c8dbb0f6cc079672b7fe) @@ -121,6 +121,7 @@ anchors.fill: parent onClicked: { _root.currentIndex = index + _autoStepController.refresh() } } } Index: sources/gui/qml/dialogs/NotificationDialog.qml =================================================================== diff -u -rac81e21684bfb1c72b8ef86bfeda04e174e5066e -ra8a42037ec8a5b2a5057c8dbb0f6cc079672b7fe --- sources/gui/qml/dialogs/NotificationDialog.qml (.../NotificationDialog.qml) (revision ac81e21684bfb1c72b8ef86bfeda04e174e5066e) +++ sources/gui/qml/dialogs/NotificationDialog.qml (.../NotificationDialog.qml) (revision a8a42037ec8a5b2a5057c8dbb0f6cc079672b7fe) @@ -153,6 +153,7 @@ onCurrentIndexChanged: { var item = model.get(_listView.currentIndex) _root.figureImageSource = item.image + _autoStepController.refresh() } delegate: Item { id: _delegateControl