From 20ab443f68452abd9851fbe8a49171a007307691 Mon Sep 17 00:00:00 2001
From: Elliu <elliu@hashi.re>
Date: Fri, 29 Oct 2021 15:19:21 +0200
Subject: [PATCH] Fix rebase from master

---
 src/Lib/Audio.cc                    |  7 ++++++
 src/Lib/Audio.hh                    |  1 +
 src/UI/DocumentViews/TimingAxis.hh  |  2 +-
 src/UI/DocumentViews/TimingScene.cc |  3 +--
 src/UI/DocumentViews/TimingScene.hh |  3 +--
 src/UI/DocumentViews/TimingView.hh  |  4 +---
 src/UI/VivyDocumentView.cc          | 34 ++++++++---------------------
 7 files changed, 21 insertions(+), 33 deletions(-)

diff --git a/src/Lib/Audio.cc b/src/Lib/Audio.cc
index fdf79c0f..96f5c4f0 100644
--- a/src/Lib/Audio.cc
+++ b/src/Lib/Audio.cc
@@ -216,3 +216,10 @@ AudioStream::getDecodedDecalage() const noexcept
     constexpr size_t overlap = 128; // The overlap
     return getDecodedChunkSize() - overlap;
 }
+
+
+quint64
+AudioStream::getLength() const noexcept
+{
+    return quint64(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::microseconds(dataFormat->duration)).count());
+}
diff --git a/src/Lib/Audio.hh b/src/Lib/Audio.hh
index 08706f94..2bf00f7e 100644
--- a/src/Lib/Audio.hh
+++ b/src/Lib/Audio.hh
@@ -32,6 +32,7 @@ public:
     // Some getters
     int getChannels() const noexcept;
     int getSampleRate() const noexcept;
+    quint64 getLength() const noexcept;
     qint64 getBitRate() const noexcept;
     QJsonObject getProperties() const noexcept override;
 
diff --git a/src/UI/DocumentViews/TimingAxis.hh b/src/UI/DocumentViews/TimingAxis.hh
index d66c0c38..6a8ec7ef 100644
--- a/src/UI/DocumentViews/TimingAxis.hh
+++ b/src/UI/DocumentViews/TimingAxis.hh
@@ -18,7 +18,7 @@ class TimingAxis final : public QGraphicsObject {
 
 public:
     explicit TimingAxis(AudioContext::StreamPtr stream, int x0, int x1, int y) noexcept;
-    ~TimingAxis() noexcept = default;
+    ~TimingAxis() noexcept override = default;
 
     QRectF boundingRect() const override;
     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
diff --git a/src/UI/DocumentViews/TimingScene.cc b/src/UI/DocumentViews/TimingScene.cc
index 09372d8d..9a87e650 100644
--- a/src/UI/DocumentViews/TimingScene.cc
+++ b/src/UI/DocumentViews/TimingScene.cc
@@ -15,7 +15,6 @@
 
 using namespace Vivy;
 
-TimingScene::TimingScene(QImage img_, quint64 soundLength_, QWidget *parent) noexcept
 TimingScene::TimingScene(QWidget *parent) noexcept
     : QGraphicsScene(parent)
 {
@@ -57,7 +56,7 @@ void
 TimingScene::handleMousePressEventLine(QGraphicsSceneMouseEvent *event, Ass::LinePtr p) noexcept
 {
     QPointF pos  = event->scenePos();
-    quint64 time = static_cast<quint64>(timeFromPos(pos.x()));
+    quint64 time = timeFromPos(pos.x());
 
     if (const auto &btn = event->button(); btn == Qt::LeftButton) {
         p->setStart(time);
diff --git a/src/UI/DocumentViews/TimingScene.hh b/src/UI/DocumentViews/TimingScene.hh
index 5097a229..86b1be9b 100644
--- a/src/UI/DocumentViews/TimingScene.hh
+++ b/src/UI/DocumentViews/TimingScene.hh
@@ -37,12 +37,11 @@ public:
     TimingAxis *getAxis();
 
 private:
-    inline quint64 timeFromPos(qreal x) const;
+    quint64 timeFromPos(qreal x) const;
     quint64 timeFromPos(quint64 x) const;
     void handleMousePressEventLine(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;
     void handleMousePressEventSyl(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;
     void handleMousePressEventChar(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;
-    qreal timeFromPos(qreal x);
 
 public slots:
 };
diff --git a/src/UI/DocumentViews/TimingView.hh b/src/UI/DocumentViews/TimingView.hh
index 604d737e..1d22b7b9 100644
--- a/src/UI/DocumentViews/TimingView.hh
+++ b/src/UI/DocumentViews/TimingView.hh
@@ -22,11 +22,9 @@ public:
     static inline constexpr QColor endColour   = QColor(0, 127, 0);
 
     explicit TimingView(QImage, AudioContext::StreamPtr, QWidget * = nullptr) noexcept;
-    ~TimingView() noexcept = default;
+    ~TimingView() noexcept override = default;
 
     TimingScene* getTimingScene() const;
-
-    TimingScene *getTimingScene() const;
     void wheelEvent(QWheelEvent *) noexcept override;
 
 private:
diff --git a/src/UI/VivyDocumentView.cc b/src/UI/VivyDocumentView.cc
index 4fb0a430..e80887ce 100644
--- a/src/UI/VivyDocumentView.cc
+++ b/src/UI/VivyDocumentView.cc
@@ -126,31 +126,15 @@ VivyDocumentView::loadAssView() noexcept
 void
 VivyDocumentView::loadAudioView() noexcept
 {
-    if (document->checkDocumentCapabilities(VivyDocument::AudioAble)) {
-        AudioContext::StreamPtr stream = document->getAudioStream();
-        if (stream == nullptr) {
-            qCritical() << "Failed to get default audio stream";
-            return;
-        }
-
-        if (!visualizer) {
-            visualizer = new QDockWidget("Visualizer", this);
-
-            visualizer->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Minimum);
-            visualizer->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::TopDockWidgetArea |
-                                        Qt::BottomDockWidgetArea);
-            visualizer->setFeatures(QDockWidget::DockWidgetMovable |
-                                    QDockWidget::DockWidgetClosable);
-            addDockWidget(Qt::LeftDockWidgetArea, visualizer, Qt::Horizontal);
-            visualizer->setTitleBarWidget(new QWidget(this));
-            Utils::setTransparentBackgroundForWidget(visualizer->titleBarWidget());
-        }
-
-        // Kubat: don't check, may throw an error but don't think we can
-        // recover from it.
-        AudioVisualizer *visualizerInner = new AudioVisualizer(stream, visualizer);
-        visualizer->setWidget(visualizerInner);
-        visualizer->layout()->setAlignment(visualizerInner, Qt::AlignTop);
+    if (!document->checkDocumentCapabilities(VivyDocument::AudioAble))
+        return;
+
+    std::shared_ptr<AudioSubDocument> audioDocument = document->getAudioSubDocument();
+    AudioContext::StreamPtr stream                  = audioDocument->getDefaultStream();
+
+    if (stream == nullptr) {
+        logError() << "Failed to get default audio stream";
+        return;
     }
 
     if (!visualizer) {
-- 
GitLab