kdeconnect-kde/app/qml/MprisSlider.qml

65 lines
1.4 KiB
QML
Raw Normal View History

/**
* SPDX-FileCopyrightText: 2019 Nicolas Fella <nicolas.fella@gmx.de>
*
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
import QtQuick 2.2
import QtQuick.Controls 2.2
Loader {
property var plugin
property var lastPosition: plugin.position
property date lastPositionTime: new Date()
property bool updatePositionSlider: true
sourceComponent: plugin.canSeek ? seekBar : progressBar
onLastPositionChanged: {
lastPositionTime = new Date();
}
Component {
id: seekBar
Slider {
from: 0
to: plugin.length
onPressedChanged: {
if (pressed) {
updatePositionSlider = false
} else {
updatePositionSlider = true
plugin.position = value
}
}
}
}
Component {
id: progressBar
ProgressBar {
from: 0
to: plugin.length
}
}
Timer {
id: positionUpdateTimer
interval: 1000
repeat: true
running: updatePositionSlider && plugin.isPlaying
onTriggered: item.value = lastPosition + (new Date().getTime() - lastPositionTime.getTime())
}
Connections {
target: plugin
onNowPlayingChanged: {
item.value = lastPosition
}
}
}