From 461d25a73dfb1d31d7e5408db77d5846a64fb183 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Sun, 7 Apr 2024 21:34:31 -0500 Subject: [PATCH] a somewhat working system of video start and end times --- src/cpp/mpv/mpvobject.cpp | 3 ++- src/qml/presenter/Slide.qml | 15 ++++++++++++++- src/rust/slide_model.rs | 11 +++++++++++ src/rust/slide_object.rs | 8 ++++++++ 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/cpp/mpv/mpvobject.cpp b/src/cpp/mpv/mpvobject.cpp index a6bc1e7..7a27a0d 100644 --- a/src/cpp/mpv/mpvobject.cpp +++ b/src/cpp/mpv/mpvobject.cpp @@ -531,8 +531,9 @@ void MpvObject::stepForward() void MpvObject::seek(double pos) { - // qDebug() << "seek" << pos; + qDebug() << "seek" << pos << m_duration; pos = qMax(0.0, qMin(pos, m_duration)); + qDebug() << "seek" << pos; command(QVariantList() << "seek" << pos << "absolute"); } diff --git a/src/qml/presenter/Slide.qml b/src/qml/presenter/Slide.qml index b894809..1f39798 100644 --- a/src/qml/presenter/Slide.qml +++ b/src/qml/presenter/Slide.qml @@ -7,6 +7,7 @@ import QtWebEngine 1.10 import QtGraphicalEffects 1.15 import org.kde.kirigami 2.13 as Kirigami import "./" as Presenter +import org.presenter 1.0 import mpv 1.0 Item { @@ -69,6 +70,7 @@ Item { mpv.setProperty("loop", "no"); /* showPassiveNotification(mpv.getProperty("loop")); */ mpv.setProperty("sid", "no"); + } /* onIsPlayingChanged: showPassiveNotification(mpv.getProperty("pause")) */ @@ -86,8 +88,19 @@ Item { interval: 100 onTriggered: { /* showPassiveNotification("YIPPEEE!") */ + if (vidStartTime > 0 && vidStartTime < vidEndTime) { + /* mpv.seek(vidStartTime); */ + let start = "+" + vidStartTime; + let end = "+" + vidEndTime; + mpv.setProperty("start", start); + mpv.setProperty("end", end); + Utils.dbg("Setting position to: " + mpv.position); + } else { + mpv.setProperty("start", "none"); + mpv.setProperty("end", "none"); + } mpv.loadFile(videoSource.toString()); - mpv.seek(vidStartTime) + Utils.dbg("Setting position to: " + vidStartTime + " and end is " + vidEndTime); if (editMode) { console.log("WHY AREN'T YOU PASUING!"); pauseTimer.restart(); diff --git a/src/rust/slide_model.rs b/src/rust/slide_model.rs index 1077e2f..046ab77 100644 --- a/src/rust/slide_model.rs +++ b/src/rust/slide_model.rs @@ -431,6 +431,7 @@ impl slide_model::SlideModel { ) { let mut slide = slide.clone(); // slide.slide_index = index; + debug!(?slide); unsafe { self.as_mut().begin_insert_rows( @@ -553,6 +554,16 @@ impl slide_model::SlideModel { .unwrap_or(QVariant::from(&1)) .value() .unwrap_or(1); + slide.video_start_time = service_item + .get(&QString::from("videoStartTime")) + .unwrap_or(QVariant::from(&0.0)) + .value() + .unwrap_or(0.0); + slide.video_end_time = service_item + .get(&QString::from("videoEndTime")) + .unwrap_or(QVariant::from(&0.0)) + .value() + .unwrap_or(0.0); slide.looping = service_item .get(&QString::from("loop")) .unwrap_or(QVariant::from(&false)) diff --git a/src/rust/slide_object.rs b/src/rust/slide_object.rs index 0df456f..06caf22 100644 --- a/src/rust/slide_object.rs +++ b/src/rust/slide_object.rs @@ -309,8 +309,16 @@ impl slide_object::SlideObject { .get(&QString::from("videoStartTime")) .unwrap_or(QVariant::from(&0.0)); if let Some(int) = video_start_time.value::() { + debug!(start_time = int); self.as_mut().set_video_start_time(int) } + let video_end_time = item + .get(&QString::from("videoEndTime")) + .unwrap_or(QVariant::from(&0.0)); + if let Some(int) = video_end_time.value::() { + debug!(end_time = int); + self.as_mut().set_video_end_time(int) + } let html = image_background.value_or_default::().ends_with(