diff --git a/FrequencyLineEdit.cpp b/FrequencyLineEdit.cpp index e37800f8d..b51aecee9 100644 --- a/FrequencyLineEdit.cpp +++ b/FrequencyLineEdit.cpp @@ -1,40 +1,41 @@ -#include "FrequencyLineEdit.hpp" - -#include -#include -#include - -#include "moc_FrequencyLineEdit.cpp" - -FrequencyLineEdit::FrequencyLineEdit (QWidget * parent) - : QLineEdit (parent) -{ - setValidator (new QRegExpValidator {QRegExp {R"(\d{0,6}(\.\d{0,6})?)"}, this}); -} - -auto FrequencyLineEdit::frequency () const -> Frequency -{ - return Radio::frequency (text (), 6); -} - -void FrequencyLineEdit::frequency (Frequency f) -{ - setText (Radio::frequency_MHz_string (f)); -} - - -FrequencyDeltaLineEdit::FrequencyDeltaLineEdit (QWidget * parent) - : QLineEdit (parent) -{ - setValidator (new QRegExpValidator {QRegExp {R"(-?\d{0,6}(\.\d{0,6})?)"}, this}); -} - -auto FrequencyDeltaLineEdit::frequency_delta () const -> FrequencyDelta -{ - return Radio::frequency_delta (text (), 6); -} - -void FrequencyDeltaLineEdit::frequency_delta (FrequencyDelta d) -{ - setText (Radio::frequency_MHz_string (d)); -} +#include "FrequencyLineEdit.hpp" + +#include +#include +#include +#include + +#include "moc_FrequencyLineEdit.cpp" + +FrequencyLineEdit::FrequencyLineEdit (QWidget * parent) + : QLineEdit (parent) +{ + setValidator (new QRegExpValidator {QRegExp {QString {R"(\d{0,6}(\)"} + QLocale {}.decimalPoint () + R"(\d{0,6})?)"}, this}); +} + +auto FrequencyLineEdit::frequency () const -> Frequency +{ + return Radio::frequency (text (), 6); +} + +void FrequencyLineEdit::frequency (Frequency f) +{ + setText (Radio::frequency_MHz_string (f)); +} + + +FrequencyDeltaLineEdit::FrequencyDeltaLineEdit (QWidget * parent) + : QLineEdit (parent) +{ + setValidator (new QRegExpValidator {QRegExp {QString {R"(-?\d{0,6}(\)"} + QLocale {}.decimalPoint () + R"(\d{0,6})?)"}, this}); +} + +auto FrequencyDeltaLineEdit::frequency_delta () const -> FrequencyDelta +{ + return Radio::frequency_delta (text (), 6); +} + +void FrequencyDeltaLineEdit::frequency_delta (FrequencyDelta d) +{ + setText (Radio::frequency_MHz_string (d)); +} diff --git a/FrequencyList.cpp b/FrequencyList.cpp index d76264f9c..3d2ea482e 100644 --- a/FrequencyList.cpp +++ b/FrequencyList.cpp @@ -410,7 +410,7 @@ QVariant FrequencyList::impl::data (QModelIndex const& index, int role) const { case Qt::EditRole: case Qt::AccessibleTextRole: - item = frequency_item.frequency_ / 1.e6; + item = Radio::frequency_MHz_string (frequency_item.frequency_); break; case Qt::DisplayRole: diff --git a/Radio.cpp b/Radio.cpp index 496640edd..882ec48ab 100644 --- a/Radio.cpp +++ b/Radio.cpp @@ -22,14 +22,32 @@ namespace Radio } - Frequency frequency (QVariant const& v, int scale) + Frequency frequency (QVariant const& v, int scale, QLocale const& locale) { - return std::llround (v.toDouble () * std::pow (10., scale)); + double value {0}; + if (QVariant::String == v.type ()) + { + value = locale.toDouble (v.value ()); + } + else + { + value = v.toDouble (); + } + return std::llround (value * std::pow (10., scale)); } - FrequencyDelta frequency_delta (QVariant const& v, int scale) + FrequencyDelta frequency_delta (QVariant const& v, int scale, QLocale const& locale) { - return std::llround (v.toDouble () * std::pow (10., scale)); + double value {0}; + if (QVariant::String == v.type ()) + { + value = locale.toDouble (v.value ()); + } + else + { + value = v.toDouble (); + } + return std::llround (value * std::pow (10., scale)); } diff --git a/Radio.hpp b/Radio.hpp index ef3631099..85a5fcadf 100644 --- a/Radio.hpp +++ b/Radio.hpp @@ -25,8 +25,8 @@ namespace Radio // QVariant argument is convertible to double and is assumed to // be scaled by (10 ** -scale). // - Frequency frequency (QVariant const&, int scale); - FrequencyDelta frequency_delta (QVariant const&, int scale); + Frequency frequency (QVariant const&, int scale, QLocale const& = QLocale ()); + FrequencyDelta frequency_delta (QVariant const&, int scale, QLocale const& = QLocale ()); // // Frequency type formatting