1#ifndef QEANGLELINEEDIT_H
2#define QEANGLELINEEDIT_H
4#include <QDoubleSpinBox>
8class QeAngleLineEdit :
public QDoubleSpinBox {
14 Q_PROPERTY(Units unit READ getUnits WRITE setUnits NOTIFY unitChanged)
19 Q_PROPERTY(
double radians READ getRadians WRITE setRadians NOTIFY radiansChanged )
25 Q_PROPERTY(
int precision READ getPrecision WRITE setPrecision NOTIFY precisionChanged )
30 Q_PROPERTY(
double minimum READ getMinimum WRITE setMinimum NOTIFY minimumChanged )
35 Q_PROPERTY(
double maximum READ getMaximum WRITE setMaximum NOTIFY maximumChanged )
39 enum class Units { SEXAGESIMAL=0, RADIANS, HMS, DMS };
42 explicit QeAngleLineEdit(QWidget* parent =
nullptr);
44 [[deprecated(
"Please use getUnits() instead")]]
45 Units getUnit()
const {
return getUnits(); }
46 Units getUnits()
const {
return m_unit; }
47 int getPrecision() {
return decimals(); }
48 double getRadians() {
return value(); }
49 double getMinimum() {
return minimum(); }
50 double getMaximum() {
return maximum(); }
53 void unitChanged(Units newUnit);
54 void validationStateChanged(QValidator::State state);
55 void radiansChanged(
double radians);
56 void precisionChanged(
int precision);
57 void minimumChanged(
double minimum);
58 void maximumChanged(
double maximum);
61 [[deprecated(
"Please use setUnits(Units unit) instead")]]
62 void setUnit(Units unit);
63 void setUnits(Units unit);
64 void setPrecision(
int newValue) { setDecimals(newValue); emit precisionChanged(newValue); }
65 void setRadians(
double newValue) { setValue(newValue); }
70 void setUnitsInt(
int unit) {
71 Units enum_unit =
static_cast<Units
>(unit);
74 void setMinimum(
double newValue) {
75 if (qFuzzyCompare(minimum(), newValue))
78 QDoubleSpinBox::setMinimum(newValue);
79 emit minimumChanged(newValue);
81 void setMaximum(
double newValue) {
82 if (qFuzzyCompare(maximum(), newValue))
85 QDoubleSpinBox::setMaximum(newValue);
86 emit maximumChanged(newValue);
90 QString textFromValue(
double value)
const override;
91 double valueFromText(
const QString& text)
const override;
92 QValidator::State validate(QString& input,
int& pos)
const override;
93 void handleState(QValidator::State state);
98 QString formatHMS(
double value)
const;
99 double parseHMS(
const QString& text,
bool& ok)
const;
101 QString formatDMS(
double value)
const;
102 double parseDMS(
const QString& text,
bool& ok)
const;
104 QString formatDegrees(
double value)
const;
105 double parseDegrees(
const QString& text,
bool& ok)
const;
107 double parseRadians(
const QString& text,
bool& ok)
const;