swift
relativeaircraftposition.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2019 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include "ui_relativeaircraftposition.h"
7 
8 using namespace swift::misc::geo;
9 using namespace swift::misc::physical_quantities;
10 
11 namespace swift::gui::editors
12 {
13  CRelativeAircraftPosition::CRelativeAircraftPosition(QWidget *parent)
14  : CForm(parent), ui(new Ui::CRelativeAircraftPosition)
15  {
16  ui->setupUi(this);
17  }
18 
20 
22  {
23  ui->sb_Distance->setReadOnly(readOnly);
24  ui->sb_RelativeBearing->setReadOnly(readOnly);
25  }
26 
28  {
29  const int distMeters = distance.valueInteger(CLengthUnit::m());
30  ui->sb_Distance->setValue(distMeters);
31  }
32 
34  {
35  if (m_originCoordinate.isNull()) { return CCoordinateGeodetic::null(); }
36  const CLength distance(ui->sb_Distance->value(), CLengthUnit::m());
37  CAngle relBearing(ui->sb_RelativeBearing->value(), CAngleUnit::deg());
38  if (!bearingOffset.isNull()) { relBearing += bearingOffset; }
39  return m_originCoordinate.calculatePosition(distance, relBearing);
40  }
41 
43  {
44  const CCoordinateGeodetic p = relPos.isNull() ? this->getRelativeCoordinate() : relPos;
45  ui->le_Info->setText(QStringLiteral("%1 / %2").arg(m_originCoordinate.toQString(true), p.toQString(true)));
46  }
47 } // namespace swift::gui::editors
Form base class.
Definition: form.h:27
void setDistance(const swift::misc::physical_quantities::CLength &distance)
Set the distance.
void displayInfo(const swift::misc::geo::CCoordinateGeodetic &relPos=swift::misc::geo::CCoordinateGeodetic::null())
Display coordinate info.
swift::misc::geo::CCoordinateGeodetic getRelativeCoordinate(const swift::misc::physical_quantities::CAngle &bearingOffset=swift::misc::physical_quantities::CAngle::null()) const
Relative coordinate based on entered data.
virtual void setReadOnly(bool readOnly)
Set editable.
CCoordinateGeodetic calculatePosition(const physical_quantities::CLength &distance, const physical_quantities::CAngle &relBearing) const
Calculate a position in distance/bearing.
virtual bool isNull() const
Is null?
QString toQString(bool i18n=false) const
Cast as QString.
Definition: mixinstring.h:76
Physical unit angle (radians, degrees)
Definition: angle.h:23
Physical unit length (length)
Definition: length.h:18
int valueInteger(MU unit) const
As integer value.