X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fwidgets%2Fsweeptimingwidget.cpp;h=cb543b1235796f3906a34638c052e7e5b891c1ee;hb=ff30bdbafa900626fdcdf5e282d6eb56e4d4b68a;hp=9bb75c869a8f780c52e3e6590e2a54ebad94931e;hpb=67d163940f97cd03137ddee93dd5aa115d0f4a5c;p=pulseview.git diff --git a/pv/widgets/sweeptimingwidget.cpp b/pv/widgets/sweeptimingwidget.cpp index 9bb75c8..cb543b1 100644 --- a/pv/widgets/sweeptimingwidget.cpp +++ b/pv/widgets/sweeptimingwidget.cpp @@ -20,12 +20,15 @@ #include "sweeptimingwidget.h" +#include + #include #include #include +using std::abs; using std::vector; namespace pv { @@ -34,6 +37,7 @@ namespace widgets { SweepTimingWidget::SweepTimingWidget(const char *suffix, QWidget *parent) : QWidget(parent), + _suffix(suffix), _layout(this), _value(this), _list(this), @@ -86,7 +90,7 @@ void SweepTimingWidget::show_list(const uint64_t *vals, size_t count) _list.clear(); for (size_t i = 0; i < count; i++) { - char *const s = sr_samplerate_string(vals[i]); + char *const s = sr_si_string_u64(vals[i], _suffix); _list.addItem(QString::fromUtf8(s), qVariantFromValue(vals[i])); g_free(s); @@ -164,9 +168,19 @@ void SweepTimingWidget::set_value(uint64_t value) { _value.setValue(value); - for (int i = 0; i < _list.count(); i++) - if (value == _list.itemData(i).value()) - _list.setCurrentIndex(i); + int best_match = _list.count() - 1; + int64_t best_variance = INT64_MAX; + + for (int i = 0; i < _list.count(); i++) { + const int64_t this_variance = abs( + (int64_t)value - _list.itemData(i).value()); + if (this_variance < best_variance) { + best_variance = this_variance; + best_match = i; + } + } + + _list.setCurrentIndex(best_match); } } // widgets