WSJT-X/Radio.cpp

73 lines
1.9 KiB
C++

#include "Radio.hpp"
#include <cmath>
#include <QMetaType>
#include <QString>
#include <QChar>
#include <QDebug>
#include <QRegExpValidator>
#include <QDataStream>
namespace Radio
{
namespace
{
struct init
{
init ()
{
qRegisterMetaType<Frequency> ("Frequency");
qRegisterMetaType<Frequencies> ("Frequencies");
qRegisterMetaTypeStreamOperators<Frequencies> ("Frequencies");
qRegisterMetaType<FrequencyDelta> ("FrequencyDelta");
}
} static_initaializer;
double constexpr MHz_factor {1.e6};
int constexpr frequency_precsion {6};
}
Frequency frequency (QVariant const& v, int scale)
{
return std::llround (v.toDouble () * std::pow (10., scale));
}
FrequencyDelta frequency_delta (QVariant const& v, int scale)
{
return std::llround (v.toDouble () * std::pow (10., scale));
}
QString frequency_MHz_string (Frequency f, QLocale const& locale)
{
return locale.toString (f / MHz_factor, 'f', frequency_precsion);
}
QString frequency_MHz_string (FrequencyDelta d, QLocale const& locale)
{
return locale.toString (d / MHz_factor, 'f', frequency_precsion);
}
QString pretty_frequency_MHz_string (Frequency f, QLocale const& locale)
{
auto f_string = locale.toString (f / MHz_factor, 'f', frequency_precsion);
return f_string.insert (f_string.size () - 3, QChar::Nbsp);
}
QString pretty_frequency_MHz_string (double f, int scale, QLocale const& locale)
{
auto f_string = locale.toString (f / std::pow (10., scale - 6), 'f', frequency_precsion);
return f_string.insert (f_string.size () - 3, QChar::Nbsp);
}
QString pretty_frequency_MHz_string (FrequencyDelta d, QLocale const& locale)
{
auto d_string = locale.toString (d / MHz_factor, 'f', frequency_precsion);
return d_string.insert (d_string.size () - 3, QChar::Nbsp);
}
}