mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-17 19:05:31 +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/infoarea.h"
|
||||||
#include "blackgui/components/radarcomponent.h"
|
#include "blackgui/components/radarcomponent.h"
|
||||||
#include "blackcore/context/contextnetwork.h"
|
#include "blackcore/context/contextnetwork.h"
|
||||||
|
#include "blackcore/context/contextownaircraft.h"
|
||||||
#include "blackmisc/simulation/simulatedaircraft.h"
|
#include "blackmisc/simulation/simulatedaircraft.h"
|
||||||
|
|
||||||
#include <QtMath>
|
#include <QtMath>
|
||||||
@@ -50,6 +51,7 @@ namespace BlackGui
|
|||||||
connect(ui->gv_RadarView, &CRadarView::radarViewResized, this, &CRadarComponent::fitInView);
|
connect(ui->gv_RadarView, &CRadarView::radarViewResized, this, &CRadarComponent::fitInView);
|
||||||
connect(ui->gv_RadarView, &CRadarView::zoomEvent, this, &CRadarComponent::changeRangeInSteps);
|
connect(ui->gv_RadarView, &CRadarView::zoomEvent, this, &CRadarComponent::changeRangeInSteps);
|
||||||
connect(&m_updateTimer, &QTimer::timeout, this, &CRadarComponent::refreshTargets);
|
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_RadarRange, qOverload<int>(&QComboBox::currentIndexChanged), this, &CRadarComponent::changeRangeFromUserSelection);
|
||||||
connect(ui->cb_Callsign, &QCheckBox::toggled, this, &CRadarComponent::refreshTargets);
|
connect(ui->cb_Callsign, &QCheckBox::toggled, this, &CRadarComponent::refreshTargets);
|
||||||
@@ -61,6 +63,7 @@ namespace BlackGui
|
|||||||
prepareScene();
|
prepareScene();
|
||||||
|
|
||||||
m_updateTimer.start(5000);
|
m_updateTimer.start(5000);
|
||||||
|
m_headingTimer.start(50);
|
||||||
}
|
}
|
||||||
|
|
||||||
CRadarComponent::~CRadarComponent()
|
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)
|
void CRadarComponent::toggleGrid(bool checked)
|
||||||
{
|
{
|
||||||
m_macroGraticule.setVisible(checked);
|
m_macroGraticule.setVisible(checked);
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ namespace BlackGui
|
|||||||
void addRadials();
|
void addRadials();
|
||||||
|
|
||||||
void refreshTargets();
|
void refreshTargets();
|
||||||
|
void rotateView();
|
||||||
|
|
||||||
void toggleGrid(bool checked);
|
void toggleGrid(bool checked);
|
||||||
|
|
||||||
@@ -70,8 +71,10 @@ namespace BlackGui
|
|||||||
QPen m_radarTargetPen = { Qt::green, 1 };
|
QPen m_radarTargetPen = { Qt::green, 1 };
|
||||||
|
|
||||||
qreal m_rangeNM = 10.0;
|
qreal m_rangeNM = 10.0;
|
||||||
|
int m_rotatenAngle = 0;
|
||||||
|
|
||||||
QTimer m_updateTimer;
|
QTimer m_updateTimer;
|
||||||
|
QTimer m_headingTimer;
|
||||||
};
|
};
|
||||||
} // ns
|
} // ns
|
||||||
} // ns
|
} // ns
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>270</width>
|
<width>342</width>
|
||||||
<height>259</height>
|
<height>259</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@@ -44,6 +44,13 @@
|
|||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>2</number>
|
<number>2</number>
|
||||||
</property>
|
</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">
|
<item row="0" column="1">
|
||||||
<widget class="QCheckBox" name="cb_Heading">
|
<widget class="QCheckBox" name="cb_Heading">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -54,17 +61,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="0" column="2" colspan="2">
|
||||||
<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">
|
|
||||||
<widget class="QCheckBox" name="cb_Altitude">
|
<widget class="QCheckBox" name="cb_Altitude">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Altitude (FL)</string>
|
<string>Altitude (FL)</string>
|
||||||
@@ -74,7 +71,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="1" column="1">
|
||||||
<widget class="QCheckBox" name="cb_GroundSpeed">
|
<widget class="QCheckBox" name="cb_GroundSpeed">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>GroundSpeed</string>
|
<string>GroundSpeed</string>
|
||||||
@@ -95,36 +92,28 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="2">
|
<item row="1" column="2">
|
||||||
<widget class="QFrame" name="fr_Range">
|
<widget class="QCheckBox" name="cb_Grid">
|
||||||
<layout class="QFormLayout" name="fl_Range">
|
<property name="text">
|
||||||
<property name="leftMargin">
|
<string>Grid</string>
|
||||||
<number>0</number>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="topMargin">
|
<property name="checked">
|
||||||
<number>0</number>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="rightMargin">
|
</widget>
|
||||||
<number>0</number>
|
</item>
|
||||||
</property>
|
<item row="2" column="2" colspan="2">
|
||||||
<property name="bottomMargin">
|
<widget class="QComboBox" name="cb_RadarRange"/>
|
||||||
<number>0</number>
|
</item>
|
||||||
</property>
|
<item row="2" column="0" colspan="2">
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="lbl_Range">
|
<widget class="QLabel" name="lbl_Range">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Range</string>
|
<string>Range</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QComboBox" name="cb_RadarRange"/>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -140,11 +129,8 @@
|
|||||||
<tabstops>
|
<tabstops>
|
||||||
<tabstop>gv_RadarView</tabstop>
|
<tabstop>gv_RadarView</tabstop>
|
||||||
<tabstop>cb_Callsign</tabstop>
|
<tabstop>cb_Callsign</tabstop>
|
||||||
<tabstop>cb_Heading</tabstop>
|
|
||||||
<tabstop>cb_Altitude</tabstop>
|
|
||||||
<tabstop>cb_GroundSpeed</tabstop>
|
<tabstop>cb_GroundSpeed</tabstop>
|
||||||
<tabstop>cb_Grid</tabstop>
|
<tabstop>cb_Grid</tabstop>
|
||||||
<tabstop>cb_RadarRange</tabstop>
|
|
||||||
</tabstops>
|
</tabstops>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|||||||
Reference in New Issue
Block a user