Make it possible to unhide the controls on mobile

This commit is contained in:
Nicolas Werner 2021-11-11 19:56:51 +01:00
parent ffc60180de
commit 435047b1ba
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9
2 changed files with 21 additions and 19 deletions

View file

@ -49,6 +49,12 @@ Item {
height: parent.height - fileInfoLabel.height
TapHandler {
onTapped: mediaControls.showControls();
}
Image {
anchors.fill: parent
source: thumbnailUrl.replace("mxc://", "image://MxcImage/")

View file

@ -21,16 +21,21 @@ Rectangle {
property var duration
property var positionValue: 0
property var position
property bool shouldShowControls: !playingVideo || playerMouseArea.shouldShowControls || volumeSlider.controlsVisible
property bool shouldShowControls: !playingVideo || playerMouseArea.shouldShowControls || volumeSlider.state == "shown"
color: {
var wc = Nheko.colors.alternateBase;
return Qt.rgba(wc.r, wc.g, wc.b, 0.5);
}
opacity: control.shouldShowControls ? 1 : 0
height: controlLayout.implicitHeight
signal playPauseActivated()
signal loadActivated()
function showControls() {
controlHideTimer.restart();
}
function durationToString(duration) {
function maybeZeroPrepend(time) {
return (time < 10) ? "0" + time.toString() : time.toString();
@ -50,26 +55,18 @@ Rectangle {
return hh + ":" + mm + ":" + ss;
}
MouseArea {
HoverHandler {
id: playerMouseArea
property bool shouldShowControls: (containsMouse && controlHideTimer.running) || (control.mediaState != MediaPlayer.PlayingState) || controlLayout.contains(mapToItem(controlLayout, mouseX, mouseY))
property bool shouldShowControls: hovered || controlHideTimer.running || control.mediaState != MediaPlayer.PlayingState
onClicked: {
control.mediaLoaded ? control.playPauseActivated() : control.loadActivated();
}
hoverEnabled: true
onPositionChanged: controlHideTimer.start()
onExited: controlHideTimer.start()
onEntered: controlHideTimer.start()
anchors.fill: control
propagateComposedEvents: true
onHoveredChanged: showControls();
}
ColumnLayout {
id: controlLayout
opacity: control.shouldShowControls ? 1 : 0
enabled: control.shouldShowControls
spacing: 0
anchors.bottom: control.bottom
@ -219,6 +216,7 @@ Rectangle {
}
}
// Fade controls in/out
Behavior on opacity {
@ -228,8 +226,6 @@ Rectangle {
}
}
// For hiding controls on stationary cursor
Timer {
id: controlHideTimer