From b308ddd436074bde4192a407bc6999ecd747b432 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Wed, 4 Aug 2021 10:38:19 +0200
Subject: [PATCH] UI: Use std::chrono for the time with the mpv slider

---
 src/UI/DocumentViews/MpvControls.cc | 14 +++++++-------
 src/UI/DocumentViews/MpvControls.hh |  7 +++++--
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/UI/DocumentViews/MpvControls.cc b/src/UI/DocumentViews/MpvControls.cc
index 375ca3f9..52bb30ce 100644
--- a/src/UI/DocumentViews/MpvControls.cc
+++ b/src/UI/DocumentViews/MpvControls.cc
@@ -18,22 +18,22 @@ MpvControls::MpvControls(MpvContainer *passedContainer, QWidget *parent) noexcep
     progressBar->setOrientation(Qt::Horizontal);
 
     mpv->registerMpvDurationCallback([progressBar, this](double time) noexcept -> void {
-        timePosition = 0;
-        timeDuration = static_cast<int>(time);
-        progressBar->setMaximum(timeDuration);
+        timePosition = chrono::seconds::zero();
+        timeDuration = chrono::seconds(static_cast<long>(time));
+        progressBar->setMaximum(static_cast<int>(timeDuration.count()));
         progressBar->setValue(0);
     });
     mpv->registerMpvTimeCallback([progressBar, this](double time) noexcept -> void {
         if (!progressBar->isSliderDown()) {
             // The user is not pressing the slider
-            timePosition = static_cast<int>(time);
-            progressBar->setValue(timePosition);
+            timePosition = chrono::seconds(static_cast<long>(time));
+            progressBar->setValue(static_cast<int>(timePosition.count()));
         }
     });
 
     connect(progressBar, &QAbstractSlider::valueChanged, this, [this](int value) noexcept -> void {
-        qDebug() << "Slider set to" << value << "max was" << timeDuration;
-        timePosition = value;
+        qDebug() << "Slider set to" << value << "max was" << timeDuration.count();
+        timePosition = chrono::seconds(value);
     });
 
     connect(togglePlaybackButton, &QAbstractButton::clicked, mpv, &MpvContainer::mpvTogglePlayback);
diff --git a/src/UI/DocumentViews/MpvControls.hh b/src/UI/DocumentViews/MpvControls.hh
index ef57d299..4be9272d 100644
--- a/src/UI/DocumentViews/MpvControls.hh
+++ b/src/UI/DocumentViews/MpvControls.hh
@@ -4,6 +4,9 @@
 #error "This is a C++ header"
 #endif
 
+#include <chrono>
+namespace chrono = std::chrono;
+
 namespace Vivy
 {
 class MpvContainer;
@@ -14,8 +17,8 @@ class MpvControls final : public QWidget {
 
 private:
     MpvContainer *mpv{ nullptr };
-    int timeDuration;
-    int timePosition;
+    chrono::seconds timeDuration;
+    chrono::seconds timePosition;
 
 public:
     explicit MpvControls(MpvContainer *mpv, QWidget *parent) noexcept;
-- 
GitLab