From fb6e974065855e29f50f2fd6a5200df55c9116b6 Mon Sep 17 00:00:00 2001
From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
Date: Fri, 9 Aug 2019 13:42:07 -0400
Subject: [PATCH] recording: improve recording quality slider

Change-Id: Ib4857a27d5e1d1e07e2ab0d11d1ebf6558276135
---
 settingswidget.cpp | 22 +++++++++++++++++-----
 settingswidget.h   |  3 ++-
 settingswidget.ui  |  8 ++++----
 3 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/settingswidget.cpp b/settingswidget.cpp
index 27124d4..07ad145 100644
--- a/settingswidget.cpp
+++ b/settingswidget.cpp
@@ -778,13 +778,19 @@ void SettingsWidget::setConnections()
 
     connect(ui->recordPathButton, &QAbstractButton::clicked, this, &SettingsWidget::openRecordFolderSlot);
 
-    connect(ui->recordQualitySlider, &QAbstractSlider::valueChanged, this, &SettingsWidget::slotRecordQualityChanged);
+    connect(ui->recordQualitySlider, &QAbstractSlider::valueChanged, this, &SettingsWidget::slotRecordQualitySliderValueChanged);
+    connect(ui->recordQualitySlider, &QAbstractSlider::sliderReleased, this, &SettingsWidget::slotRecordQualitySliderSliderReleased);
 
     connect(ui->hardwareAccelCheckBox, &QAbstractButton::clicked, this, &SettingsWidget::slotSetHardwareAccel);
 }
 
 // *************************  General Settings  *************************
 
+QString getRecordQualityString(int value)
+{
+    return value ? QString::number(static_cast<float>(value) / 100, 'f', 1) + " Mbps" : "Default";
+}
+
 void SettingsWidget::populateGeneralSettings()
 {
     QSettings settings("jami.net", "Jami");
@@ -809,7 +815,7 @@ void SettingsWidget::populateGeneralSettings()
     ui->recordPreviewCheckBox->setChecked(recordPreview);
 
     auto recordQuality = LRCInstance::avModel().getRecordQuality();
-    ui->recordQualityValueLabel->setText(QString::number(recordQuality / 1000) + " MB/s");
+    ui->recordQualityValueLabel->setText(getRecordQualityString(recordQuality));
     ui->recordQualitySlider->setValue(recordQuality);
 
     if (LRCInstance::avModel().getRecordPath().empty()) {
@@ -894,10 +900,16 @@ void SettingsWidget::slotRecordPreviewClicked(bool state)
     LRCInstance::avModel().setRecordPreview(state);
 }
 
-void SettingsWidget::slotRecordQualityChanged(int value)
+void SettingsWidget::slotRecordQualitySliderValueChanged(int value)
+{
+    ui->recordQualityValueLabel->setText(getRecordQualityString(value));
+}
+
+void SettingsWidget::slotRecordQualitySliderSliderReleased()
 {
-    ui->recordQualityValueLabel->setText(QString::number(value / 1000) + " MB/s");
-    LRCInstance::avModel().setRecordQuality(value);
+    auto value = ui->recordQualitySlider->value();
+    // 0 - 500 -> 0 - 50000
+    LRCInstance::avModel().setRecordQuality(value * 100);
 }
 
 // *************************  Audio/Visual Settings  ************recordQuality*************
diff --git a/settingswidget.h b/settingswidget.h
index 36d080c..709a0e1 100644
--- a/settingswidget.h
+++ b/settingswidget.h
@@ -133,7 +133,8 @@ private slots:
     void openRecordFolderSlot();
     void slotAlwaysRecordingClicked(bool state);
     void slotRecordPreviewClicked(bool state);
-    void slotRecordQualityChanged(int value);
+    void slotRecordQualitySliderValueChanged(int value);
+    void slotRecordQualitySliderSliderReleased();
     void slotSetUpdateAutomatic(bool state);
     void outputDevIndexChangedSlot(int index);
     void inputdevIndexChangedSlot(int index);
diff --git a/settingswidget.ui b/settingswidget.ui
index ffb67f2..767f739 100644
--- a/settingswidget.ui
+++ b/settingswidget.ui
@@ -971,13 +971,13 @@
                               </size>
                              </property>
                              <property name="maximum">
-                              <number>50000</number>
+                              <number>500</number>
                              </property>
                              <property name="singleStep">
-                              <number>10</number>
+                              <number>1</number>
                              </property>
                              <property name="pageStep">
-                              <number>500</number>
+                              <number>10</number>
                              </property>
                              <property name="orientation">
                               <enum>Qt::Horizontal</enum>
@@ -989,7 +989,7 @@
                               <enum>QSlider::TicksBothSides</enum>
                              </property>
                              <property name="tickInterval">
-                              <number>5000</number>
+                              <number>50</number>
                              </property>
                             </widget>
                            </item>
-- 
GitLab