mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 14:55:36 +08:00
Synchronize radar screen with own aircraft heading
ref T653
This commit is contained in:
committed by
Mat Sutcliffe
parent
8c7475f620
commit
6cb5478c5c
@@ -11,6 +11,7 @@
|
||||
#include "blackgui/infoarea.h"
|
||||
#include "blackgui/components/radarcomponent.h"
|
||||
#include "blackcore/context/contextnetwork.h"
|
||||
#include "blackcore/context/contextownaircraft.h"
|
||||
#include "blackmisc/simulation/simulatedaircraft.h"
|
||||
|
||||
#include <QtMath>
|
||||
@@ -50,6 +51,7 @@ namespace BlackGui
|
||||
connect(ui->gv_RadarView, &CRadarView::radarViewResized, this, &CRadarComponent::fitInView);
|
||||
connect(ui->gv_RadarView, &CRadarView::zoomEvent, this, &CRadarComponent::changeRangeInSteps);
|
||||
connect(&m_updateTimer, &QTimer::timeout, this, &CRadarComponent::refreshTargets);
|
||||
connect(&m_headingTimer, &QTimer::timeout, this, &CRadarComponent::rotateView);
|
||||
|
||||
connect(ui->cb_RadarRange, qOverload<int>(&QComboBox::currentIndexChanged), this, &CRadarComponent::changeRangeFromUserSelection);
|
||||
connect(ui->cb_Callsign, &QCheckBox::toggled, this, &CRadarComponent::refreshTargets);
|
||||
@@ -61,6 +63,7 @@ namespace BlackGui
|
||||
prepareScene();
|
||||
|
||||
m_updateTimer.start(5000);
|
||||
m_headingTimer.start(50);
|
||||
}
|
||||
|
||||
CRadarComponent::~CRadarComponent()
|
||||
@@ -197,6 +200,30 @@ namespace BlackGui
|
||||
}
|
||||
}
|
||||
|
||||
void CRadarComponent::rotateView()
|
||||
{
|
||||
if (sGui->getIContextOwnAircraft())
|
||||
{
|
||||
if (isVisibleWidget())
|
||||
{
|
||||
int headingDegree = 0;
|
||||
if (! ui->cb_LockNorth->isChecked())
|
||||
{
|
||||
headingDegree = sGui->getIContextOwnAircraft()->getOwnAircraftSituation().getHeading().valueInteger(CAngleUnit::deg());
|
||||
}
|
||||
|
||||
if (m_rotatenAngle != headingDegree)
|
||||
{
|
||||
// Rotations are summed up, hence rotate back before applying the new rotation.
|
||||
// Doing a global transformation reset will not work as it resets also zooming.
|
||||
ui->gv_RadarView->rotate(-m_rotatenAngle);
|
||||
ui->gv_RadarView->rotate(headingDegree);
|
||||
m_rotatenAngle = headingDegree;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CRadarComponent::toggleGrid(bool checked)
|
||||
{
|
||||
m_macroGraticule.setVisible(checked);
|
||||
|
||||
@@ -49,6 +49,7 @@ namespace BlackGui
|
||||
void addRadials();
|
||||
|
||||
void refreshTargets();
|
||||
void rotateView();
|
||||
|
||||
void toggleGrid(bool checked);
|
||||
|
||||
@@ -70,8 +71,10 @@ namespace BlackGui
|
||||
QPen m_radarTargetPen = { Qt::green, 1 };
|
||||
|
||||
qreal m_rangeNM = 10.0;
|
||||
int m_rotatenAngle = 0;
|
||||
|
||||
QTimer m_updateTimer;
|
||||
QTimer m_headingTimer;
|
||||
};
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>270</width>
|
||||
<width>342</width>
|
||||
<height>259</height>
|
||||
</rect>
|
||||
</property>
|
||||
@@ -44,6 +44,13 @@
|
||||
<property name="bottomMargin">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="1" column="0">
|
||||
<widget class="QCheckBox" name="cb_LockNorth">
|
||||
<property name="text">
|
||||
<string>Lock North</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QCheckBox" name="cb_Heading">
|
||||
<property name="text">
|
||||
@@ -54,17 +61,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="cb_Grid">
|
||||
<property name="text">
|
||||
<string>Grid</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<item row="0" column="2" colspan="2">
|
||||
<widget class="QCheckBox" name="cb_Altitude">
|
||||
<property name="text">
|
||||
<string>Altitude (FL)</string>
|
||||
@@ -74,7 +71,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="cb_GroundSpeed">
|
||||
<property name="text">
|
||||
<string>GroundSpeed</string>
|
||||
@@ -95,34 +92,26 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QFrame" name="fr_Range">
|
||||
<layout class="QFormLayout" name="fl_Range">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="lbl_Range">
|
||||
<property name="text">
|
||||
<string>Range</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="cb_RadarRange"/>
|
||||
</item>
|
||||
</layout>
|
||||
<widget class="QCheckBox" name="cb_Grid">
|
||||
<property name="text">
|
||||
<string>Grid</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2" colspan="2">
|
||||
<widget class="QComboBox" name="cb_RadarRange"/>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QLabel" name="lbl_Range">
|
||||
<property name="text">
|
||||
<string>Range</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
@@ -140,11 +129,8 @@
|
||||
<tabstops>
|
||||
<tabstop>gv_RadarView</tabstop>
|
||||
<tabstop>cb_Callsign</tabstop>
|
||||
<tabstop>cb_Heading</tabstop>
|
||||
<tabstop>cb_Altitude</tabstop>
|
||||
<tabstop>cb_GroundSpeed</tabstop>
|
||||
<tabstop>cb_Grid</tabstop>
|
||||
<tabstop>cb_RadarRange</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
||||
Reference in New Issue
Block a user