Files
youtube-playlist/ui/main.qml
Ruben Garcalia 81d9952fa3 Pues ahora hay doble buffer
Falta el hilo que descargue el video de youtube, que se dice mas pronto que se hace
2026-08-12 01:48:29 +02:00

164 lines
3.8 KiB
QML

pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Controls.impl
import QtMultimedia
import QtQuick.Effects
Window {
id: window
width: 800
height: 600
visible: true
title: "YouAlbumTube"
color: "#1e1e2e"
function togglePause() {
// videoPlayer.playbackState == MediaPlayer.PlayingState ? videoPlayer.pause() : videoPlayer.play();
playlist.togglePause();
seekFeedback.hide();
playFeedback.trigger();
}
property int times: 0
property int dir: 0
function seek(time) {
let opacity = seekFeedback.get_opacity();
if (opacity <= 0) {
window.times = 0;
}
window.times++;
if (time > 0) {
if (dir < 0) {
window.times = 1;
}
dir = 1;
// videoPlayer.position = Math.min(videoPlayer.duration, videoPlayer.position + time);
playlist.seek(time);
innerText.text = "+" + (5 * window.times);
} else if (time <= 0) {
if (dir > 0) {
window.times = 1;
}
dir = -1;
// videoPlayer.position = Math.max(0, videoPlayer.position + time);
playlist.seek(time);
innerText.text = "-" + (5 * window.times);
}
playFeedback.hide();
seekFeedback.trigger();
}
Shortcut {
sequence: "Space"
onActivated: window.togglePause()
}
Shortcut {
sequence: "Left"
onActivated: window.seek(-5000)
}
Shortcut {
sequence: "Right"
onActivated: window.seek(5000)
}
MouseArea {
anchors.fill: parent
onClicked: window.togglePause()
}
Text {
anchors.centerIn: parent
text: "No content\nAdd it to playlist!"
font.pixelSize: 32
font.bold: true
color: "#cdd6f4"
horizontalAlignment: Text.AlignHCenter
}
AudioOutput {
id: audioOutputA
}
VideoOutput {
id: displayOutputA
anchors.fill: parent
}
AudioOutput {
id: audioOutputB
}
VideoOutput {
id: displayOutputB
anchors.fill: parent
}
Component.onCompleted: {
playlist.videoOutputA = displayOutputA;
playlist.audioOutputA = audioOutputA;
playlist.videoOutputB = displayOutputB;
playlist.audioOutputB = audioOutputB;
playlist.addToQueue("../ui/media/video.mp4");
playlist.addToQueue("../ui/media/Puta.mp4");
playlist.swapAndPlay();
}
FadingFeedback {
id: playFeedback
IconImage {
id: innerIcon
anchors.centerIn: parent
anchors.fill: parent
// source: videoPlayer.playbackState === MediaPlayer.PlayingState ? "qrc:/App/ui/icons/play.svg" : "qrc:/App/ui/icons/pause.svg"
source: playlist.playingState === "playing" ? "qrc:/App/ui/icons/play.svg" : "qrc:/App/ui/icons/pause.svg"
color: "white"
fillMode: Image.PreserveAspectFit
layer.enabled: true
layer.effect: MultiEffect {
shadowEnabled: true
shadowColor: "black"
shadowBlur: 0.5
}
}
}
FadingFeedback {
id: seekFeedback
Text {
id: innerText
anchors.fill: parent
anchors.centerIn: parent
text: ""
color: "white"
// fontSizeMode: Text.Fit
horizontalAlignment: Text.AlignHCenter
font.pixelSize: 72
font.bold: true
layer.enabled: true
layer.effect: MultiEffect {
shadowEnabled: true
shadowColor: "black"
shadowBlur: 0.5
}
}
}
}