File: FrequencyLineEdit.cpp

package info (click to toggle)
js8call 2.5.1%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 24,720 kB
  • sloc: cpp: 562,655; sh: 898; python: 132; ansic: 102; makefile: 4
file content (57 lines) | stat: -rw-r--r-- 1,593 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "FrequencyLineEdit.h"

#include <limits>

#include <QDoubleValidator>
#include <QLocale>
#include <QString>

#include "moc_FrequencyLineEdit.cpp"

namespace {
class MHzValidator : public QDoubleValidator {
  public:
    MHzValidator(double bottom, double top, QObject *parent = nullptr)
        : QDoubleValidator{bottom, top, 6, parent} {}

    State validate(QString &input, int &pos) const override {
        State result = QDoubleValidator::validate(input, pos);
        if (Acceptable == result) {
            bool ok;
            (void)QLocale{}.toDouble(input, &ok);
            if (!ok) {
                result = Intermediate;
            }
        }
        return result;
    }
};
} // namespace

FrequencyLineEdit::FrequencyLineEdit(QWidget *parent) : QLineEdit(parent) {
    setValidator(new MHzValidator{
        0., std::numeric_limits<Radio::Frequency>::max() / 10.e6, 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 MHzValidator{
        -std::numeric_limits<FrequencyDelta>::max() / 10.e6,
        std::numeric_limits<FrequencyDelta>::max() / 10.e6, 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));
}