From 8721bf61074adfe3bd33251da9eae9638386a619 Mon Sep 17 00:00:00 2001 From: Warchamp7 Date: Fri, 26 Apr 2024 00:14:14 -0400 Subject: [PATCH] UI: Update media source time labels while seeking --- UI/media-controls.cpp | 36 ++++++++++++++++++++++++++---------- UI/media-controls.hpp | 1 + 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/UI/media-controls.cpp b/UI/media-controls.cpp index 836099045..8f24e98ca 100644 --- a/UI/media-controls.cpp +++ b/UI/media-controls.cpp @@ -160,6 +160,7 @@ void MediaControls::MediaSliderReleased() obs_source_media_set_time(source, GetSliderTime(seek)); } + UpdateLabels(seek); seek = lastSeek = -1; } @@ -179,6 +180,7 @@ void MediaControls::MediaSliderMoved(int val) { if (seekTimer.isActive()) { seek = val; + UpdateLabels(seek); } } @@ -358,16 +360,7 @@ void MediaControls::SetSliderPosition() sliderPosition = 0.0f; ui->slider->setValue((int)sliderPosition); - - ui->timerLabel->setText(FormatSeconds((int)(time / 1000.0f))); - - if (!countDownTimer) - ui->durationLabel->setText( - FormatSeconds((int)(duration / 1000.0f))); - else - ui->durationLabel->setText( - QString("-") + - FormatSeconds((int)((duration - time) / 1000.0f))); + UpdateLabels((int)sliderPosition); } QString MediaControls::FormatSeconds(int totalSeconds) @@ -535,3 +528,26 @@ void MediaControls::UpdateSlideCounter() ui->durationLabel->setText("-"); } } + +void MediaControls::UpdateLabels(int val) +{ + OBSSource source = OBSGetStrongRef(weakSource); + if (!source) { + return; + } + + float duration = (float)obs_source_media_get_duration(source); + float percent = (float)val / (float)ui->slider->maximum(); + + float time = percent * duration; + + ui->timerLabel->setText(FormatSeconds((int)(time / 1000.0f))); + + if (!countDownTimer) + ui->durationLabel->setText( + FormatSeconds((int)(duration / 1000.0f))); + else + ui->durationLabel->setText( + QString("-") + + FormatSeconds((int)((duration - time) / 1000.0f))); +} diff --git a/UI/media-controls.hpp b/UI/media-controls.hpp index 82bfd6004..c58254ffe 100644 --- a/UI/media-controls.hpp +++ b/UI/media-controls.hpp @@ -64,6 +64,7 @@ private slots: void MoveSliderBackwards(int seconds = 5); void UpdateSlideCounter(); + void UpdateLabels(int val); public slots: void PlayMedia();