From e7f4ec5a11978a076dc93bff12e40433c9788963 Mon Sep 17 00:00:00 2001
From: Elliu <goyard.louis@gmail.com>
Date: Mon, 2 Aug 2021 22:16:04 +0200
Subject: [PATCH] Move zoomSlider into TimingParams

As it will probably have more things later, so we can arrange it in
itself and put it wherever we want
---
 src/UI/DocumentViews/AudioVisualizer.cc | 25 +++++++--------
 src/UI/DocumentViews/AudioVisualizer.hh |  1 +
 src/UI/DocumentViews/TimingParams.cc    | 42 +++++++++++++++++++++++++
 src/UI/DocumentViews/TimingParams.hh    | 33 +++++++++++++++++++
 4 files changed, 87 insertions(+), 14 deletions(-)
 create mode 100644 src/UI/DocumentViews/TimingParams.cc
 create mode 100644 src/UI/DocumentViews/TimingParams.hh

diff --git a/src/UI/DocumentViews/AudioVisualizer.cc b/src/UI/DocumentViews/AudioVisualizer.cc
index c0f0fa31..8c641453 100644
--- a/src/UI/DocumentViews/AudioVisualizer.cc
+++ b/src/UI/DocumentViews/AudioVisualizer.cc
@@ -65,20 +65,17 @@ AudioVisualizer::AudioVisualizer(AudioContext::StreamPtr stream, QWidget *parent
 void
 AudioVisualizer::printSpectrum(QImage pixmap, quint64 audioLength) noexcept
 {
-    TimingView *timer   = new TimingView(pixmap, audioLength, this);
-    QHBoxLayout *layout = new QHBoxLayout;
-
-    QSlider *slider = new QSlider(Qt::Vertical);
-    slider->setMinimum(0);
-    slider->setMaximum(100);
-    slider->setSingleStep(0);
-    slider->setPageStep(0);
-    slider->setValue(0);
+    TimingView *timer    = new TimingView(pixmap, audioLength, this);
+    TimingParams *params = new TimingParams(this);
+
+    // The only that we want to take all the space is the timer in itself
+    QGridLayout *layout = new QGridLayout;
+    layout->addWidget(timer, 1, 0);
+    layout->setColumnStretch(0, 10);
+    layout->addWidget(params, 1, 1);
+    layout->setColumnStretch(1, 0);
+    setLayout(layout);
 
-    connect(slider, &QSlider::valueChanged, timer->getTimingScene()->getAxis(),
+    connect(params->getZoomSlider(), &QSlider::valueChanged, timer->getTimingScene()->getAxis(),
             &TimingAxis::refreshTicks);
-
-    layout->addWidget(timer);
-    layout->addWidget(slider);
-    setLayout(layout);
 }
diff --git a/src/UI/DocumentViews/AudioVisualizer.hh b/src/UI/DocumentViews/AudioVisualizer.hh
index 33523f7a..82a1dad9 100644
--- a/src/UI/DocumentViews/AudioVisualizer.hh
+++ b/src/UI/DocumentViews/AudioVisualizer.hh
@@ -6,6 +6,7 @@
 #endif
 
 #include "TimingView.hh"
+#include "TimingParams.hh"
 #include "../../Lib/Audio.hh"
 
 namespace Vivy
diff --git a/src/UI/DocumentViews/TimingParams.cc b/src/UI/DocumentViews/TimingParams.cc
new file mode 100644
index 00000000..c50397b1
--- /dev/null
+++ b/src/UI/DocumentViews/TimingParams.cc
@@ -0,0 +1,42 @@
+#include "TimingParams.hh"
+
+using namespace Vivy;
+
+TimingParams::TimingParams(QWidget *parent) noexcept
+    : QWidget(parent)
+{
+    QHBoxLayout *layout = new QHBoxLayout;
+
+    zoomSlider = std::make_unique<QSlider>(new QSlider(Qt::Vertical));
+    if (QSlider *slider = zoomSlider.get()) {
+        slider->setMinimum(0);
+        slider->setMaximum(100);
+        slider->setSingleStep(0);
+        slider->setPageStep(0);
+        slider->setValue(0);
+        layout->addWidget(slider);
+    }
+    sensibilitySlider = std::make_unique<QSlider>(new QSlider(Qt::Vertical));
+    if (QSlider *slider = sensibilitySlider.get()) {
+        slider->setMinimum(0);
+        slider->setMaximum(100);
+        slider->setSingleStep(0);
+        slider->setPageStep(0);
+        slider->setValue(0);
+        layout->addWidget(slider);
+    }
+
+    setLayout(layout);
+}
+
+QSlider *
+TimingParams::getZoomSlider() const noexcept
+{
+    return zoomSlider.get();
+}
+
+QSlider *
+TimingParams::getSensibilitySlider() const noexcept
+{
+    return sensibilitySlider.get();
+}
diff --git a/src/UI/DocumentViews/TimingParams.hh b/src/UI/DocumentViews/TimingParams.hh
new file mode 100644
index 00000000..6cf92c6d
--- /dev/null
+++ b/src/UI/DocumentViews/TimingParams.hh
@@ -0,0 +1,33 @@
+#ifndef VIVY_TIMING_PARAMS_H
+#define VIVY_TIMING_PARAMS_H
+
+#ifndef __cplusplus
+#error "This is a C++ header"
+#endif
+
+#include "../../Lib/Utils.hh"
+
+#include <QWidget>
+#include <QSlider>
+#include <QLayout>
+
+namespace Vivy
+{
+class TimingParams final : public QWidget {
+    Q_OBJECT
+
+public:
+    explicit TimingParams(QWidget * = nullptr) noexcept;
+
+private:
+    std::unique_ptr<QSlider> zoomSlider;
+    std::unique_ptr<QSlider> sensibilitySlider;
+
+public:
+    QSlider *getZoomSlider() const noexcept;
+    QSlider *getSensibilitySlider() const noexcept;
+};
+
+}
+
+#endif // VIVY_TIMING_PARAMS_H
-- 
GitLab