6 #include <QDoubleValidator>
8 #include "ui_pbhsform.h"
13 using namespace swift::misc::aviation;
14 using namespace swift::misc::physical_quantities;
16 namespace swift::gui::editors
22 ui->le_Bank->setValidator(
new QDoubleValidator(-180.0 + CAngleUnit::deg().getEpsilon(), 180.0, 3, ui->le_Bank));
23 ui->le_Pitch->setValidator(
24 new QDoubleValidator(-180.0 + CAngleUnit::deg().getEpsilon(), 180.0, 3, ui->le_Pitch));
46 ui->hs_Bank->setValue(value);
49 double CPbhsForm::getBankAngleDegrees()
const
51 const QString v(ui->le_Bank->text().replace(
',',
'.'));
53 double vd = v.toDouble(&ok);
54 if (!ok) { vd = 0.0; }
55 return CAngle::normalizeDegrees180(vd, RoundDigits);
64 ui->hs_Pitch->setValue(value);
67 double CPbhsForm::getPitchAngleDegrees()
const
69 const QString v(ui->le_Pitch->text().replace(
',',
'.'));
71 double vd = v.toDouble(&ok);
72 if (!ok) { vd = 0.0; }
73 return CAngle::normalizeDegrees180(vd, RoundDigits);
84 ui->hs_Heading->setValue(value);
87 double CPbhsForm::getHeadingAngleDegrees()
const
89 const QString v(ui->le_Heading->text().replace(
',',
'.'));
91 double vd = v.toDouble(&ok);
92 if (!ok) { vd = 0.0; }
93 return CAngle::normalizeDegrees180(vd, RoundDigits);
98 const int gsKts = ui->sb_GsKts->value();
99 return CSpeed(gsKts, CSpeedUnit::kts());
119 ui->le_Bank->setReadOnly(readOnly);
120 ui->le_Heading->setReadOnly(readOnly);
121 ui->le_Pitch->setReadOnly(readOnly);
123 ui->hs_Bank->setEnabled(!readOnly);
124 ui->hs_Heading->setEnabled(!readOnly);
125 ui->hs_Pitch->setEnabled(!readOnly);
130 void CPbhsForm::bankSliderChanged(
int value)
132 const int angle = clampAngle(qRound(this->getBankAngleDegrees()));
133 if (value == angle) {
return; }
137 void CPbhsForm::pitchSliderChanged(
int value)
139 const int angle = clampAngle(qRound(this->getPitchAngleDegrees()));
140 if (value == angle) {
return; }
144 void CPbhsForm::headingSliderChanged(
int value)
146 const int angle = clampAngle(qRound(this->getHeadingAngleDegrees()));
147 if (value == angle) {
return; }
151 void CPbhsForm::bankEntered()
153 const double ad = this->getBankAngleDegrees();
156 ui->le_Bank->setText(n);
157 const int angle = clampAngle(qRound(ad));
158 if (angle == ui->hs_Bank->value()) {
return; }
159 ui->hs_Bank->setValue(angle);
162 void CPbhsForm::resetBank()
164 ui->le_Bank->setText(
"0");
165 ui->hs_Bank->setValue(0);
168 void CPbhsForm::pitchEntered()
170 const double ad = this->getPitchAngleDegrees();
173 ui->le_Pitch->setText(n);
174 const int angle = clampAngle(qRound(ad));
175 if (angle == ui->hs_Pitch->value()) {
return; }
176 ui->hs_Pitch->setValue(angle);
179 void CPbhsForm::resetPitch()
181 ui->le_Pitch->setText(
"0");
182 ui->hs_Pitch->setValue(0);
185 void CPbhsForm::headingEntered()
187 const double ad = this->getHeadingAngleDegrees();
190 ui->le_Heading->setText(n);
191 const int angle = clampAngle(qRound(ad));
192 if (angle == ui->hs_Heading->value()) {
return; }
193 ui->hs_Heading->setValue(angle);
196 void CPbhsForm::resetHeading()
198 ui->le_Heading->setText(
"0");
199 ui->hs_Heading->setValue(0);
Value object encapsulating information of an aircraft's situation.
void setGroundSpeed(const physical_quantities::CSpeed &groundspeed)
Set ground speed.
const CHeading & getHeading() const
Get heading.
void setBank(const physical_quantities::CAngle &bank)
Set bank (angle)
void setHeading(const CHeading &heading)
Set heading.
void setPitch(const physical_quantities::CAngle &pitch)
Set pitch.
const physical_quantities::CAngle & getBank() const
Get bank (angle)
const physical_quantities::CAngle & getPitch() const
Get pitch.
Heading as used in aviation, can be true or magnetic heading.
Physical unit angle (radians, degrees)
int valueInteger(MU unit) const
As integer value.
Free functions in swift::misc.
SWIFT_MISC_EXPORT QString dotToLocaleDecimalPoint(QString &input)
Replace dot '.' by locale decimal point.
void valueChanged(int value)
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
QString number(double n, char format, int precision)