diff options
author | Uwe Klotz <uklotz@mixxx.org> | 2020-12-05 13:34:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-05 13:34:10 +0100 |
commit | ac8f705385d61c996a32c185ef5892742e6501e4 (patch) | |
tree | 79b558ebe4908e3a58848dcc5e2abaee07e19531 | |
parent | fb678c32ddd9f46bf989e9ead4f4edc15675e2ac (diff) | |
parent | e61e96021fcb6de6c1f5339a10a6f5180f7ba88e (diff) |
Merge pull request #3400 from Holzhaus/adjust-relative-bpm-display
Adjust relative bpm display
-rw-r--r-- | src/widget/wnumberrate.cpp | 31 |
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)); } |