summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorUwe Klotz <uklotz@mixxx.org>2020-12-05 13:34:10 +0100
committerGitHub <noreply@github.com>2020-12-05 13:34:10 +0100
commitac8f705385d61c996a32c185ef5892742e6501e4 (patch)
tree79b558ebe4908e3a58848dcc5e2abaee07e19531 /src
parentfb678c32ddd9f46bf989e9ead4f4edc15675e2ac (diff)
parente61e96021fcb6de6c1f5339a10a6f5180f7ba88e (diff)
Merge pull request #3400 from Holzhaus/adjust-relative-bpm-display
Adjust relative bpm display
Diffstat (limited to 'src')
-rw-r--r--src/widget/wnumberrate.cpp31
1 files changed, 20 insertions, 11 deletions
diff --git a/src/widget/wnumberrate.cpp b/src/widget/wnumberrate.cpp
index 34a65d159c..dba4a6ced6 100644
--- a/src/widget/wnumberrate.cpp
+++ b/src/widget/wnumberrate.cpp
@@ -16,6 +16,19 @@
#include "control/controlproxy.h"
#include "util/math.h"
+namespace {
+
+inline QChar sign(double number) {
+ if (number > 0) {
+ return '+';
+ }
+ if (number < 0) {
+ return '-';
+ }
+ return ' ';
+}
+}
+
WNumberRate::WNumberRate(const char * group, QWidget * parent)
: WNumber(parent) {
m_pRateRangeControl = new ControlProxy(group, "rateRange", this);
@@ -28,16 +41,12 @@ WNumberRate::WNumberRate(const char * group, QWidget * parent)
setValue(0);
}
-void WNumberRate::setValue(double /*dValue*/) {
- double vsign = m_pRateControl->get() *
- m_pRateRangeControl->get() *
- m_pRateDirControl->get();
-
- char sign = '+';
- if (vsign < -0.00000001) {
- sign = '-';
- }
+void WNumberRate::setValue(double dValue) {
+ const double rateRange = m_pRateRangeControl->get();
+ const double rateDir = m_pRateDirControl->get();
+ const double digitFactor = pow(10, m_iNoDigits);
+ // Calculate percentage rounded to the number of digits specified by iNoDigits
+ const double percentage = round(dValue * rateRange * rateDir * 100.0 * digitFactor) / digitFactor;
- setText(QString(m_skinText).append(sign)
- .append("%1").arg(fabs(vsign) * 100.0, 0, 'f', m_iNoDigits));
+ setText(m_skinText + sign(percentage) + QString::number(fabs(percentage), 'f', m_iNoDigits));
}