diff --git a/plugins/channelrx/demodadsb/adsbdemoddisplaydialog.cpp b/plugins/channelrx/demodadsb/adsbdemoddisplaydialog.cpp
index b2e645fd2..028dd712c 100644
--- a/plugins/channelrx/demodadsb/adsbdemoddisplaydialog.cpp
+++ b/plugins/channelrx/demodadsb/adsbdemoddisplaydialog.cpp
@@ -29,6 +29,7 @@ ADSBDemodDisplayDialog::ADSBDemodDisplayDialog(ADSBDemodSettings *settings, QWid
{
ui->setupUi(this);
ui->timeout->setValue(settings->m_removeTimeout);
+ ui->aircraftMinZoom->setValue(settings->m_aircraftMinZoom);
ui->airportRange->setValue(settings->m_airportRange);
ui->airportSize->setCurrentIndex((int)settings->m_airportMinimumSize);
ui->heliports->setChecked(settings->m_displayHeliports);
@@ -61,6 +62,7 @@ ADSBDemodDisplayDialog::~ADSBDemodDisplayDialog()
void ADSBDemodDisplayDialog::accept()
{
m_settings->m_removeTimeout = ui->timeout->value();
+ m_settings->m_aircraftMinZoom = ui->aircraftMinZoom->value();
m_settings->m_airportRange = ui->airportRange->value();
m_settings->m_airportMinimumSize = (ADSBDemodSettings::AirportType)ui->airportSize->currentIndex();
m_settings->m_displayHeliports = ui->heliports->isChecked();
diff --git a/plugins/channelrx/demodadsb/adsbdemoddisplaydialog.ui b/plugins/channelrx/demodadsb/adsbdemoddisplaydialog.ui
index 417ba074e..2fb04c314 100644
--- a/plugins/channelrx/demodadsb/adsbdemoddisplaydialog.ui
+++ b/plugins/channelrx/demodadsb/adsbdemoddisplaydialog.ui
@@ -524,6 +524,23 @@
+ -
+
+
+ Scale aircraft minimum zoom level
+
+
+
+ -
+
+
+ When map zoom (0 min zoom - 15 max zoom) is higher than this value, aircraft icon size will be scaled
+
+
+ 15
+
+
+
diff --git a/plugins/channelrx/demodadsb/adsbdemodgui.cpp b/plugins/channelrx/demodadsb/adsbdemodgui.cpp
index 3fe544f6f..35a455966 100644
--- a/plugins/channelrx/demodadsb/adsbdemodgui.cpp
+++ b/plugins/channelrx/demodadsb/adsbdemodgui.cpp
@@ -609,7 +609,9 @@ QVariant AirspaceModel::data(const QModelIndex &index, int role) const
}
else if (role == AirspaceModel::airspaceBorderColorRole)
{
- if (m_airspaces[row]->m_category == "D") {
+ if ((m_airspaces[row]->m_category == "D")
+ || (m_airspaces[row]->m_category == "G")
+ || (m_airspaces[row]->m_category == "CTR")) {
return QVariant::fromValue(QColor(0x00, 0x00, 0xff, 0x00));
} else {
return QVariant::fromValue(QColor(0xff, 0x00, 0x00, 0x00));
@@ -617,7 +619,9 @@ QVariant AirspaceModel::data(const QModelIndex &index, int role) const
}
else if (role == AirspaceModel::airspaceFillColorRole)
{
- if (m_airspaces[row]->m_category == "D") {
+ if ((m_airspaces[row]->m_category == "D")
+ || (m_airspaces[row]->m_category == "G")
+ || (m_airspaces[row]->m_category == "CTR")) {
return QVariant::fromValue(QColor(0x00, 0x00, 0xff, 0x10));
} else {
return QVariant::fromValue(QColor(0xff, 0x00, 0x00, 0x10));
@@ -4215,7 +4219,7 @@ void ADSBDemodGUI::updateAirports()
if (airportInfo->m_type >= m_settings.m_airportMinimumSize)
{
// Only display heliports if enabled
- if (m_settings.m_displayHeliports || (airportInfo->m_type != ADSBDemodSettings::AirportType::Heliport))
+ if (m_settings.m_displayHeliports || (airportInfo->m_type != AirportInformation::AirportType::Heliport))
{
m_airportModel.addAirport(airportInfo, azEl.getAzimuth(), azEl.getElevation(), azEl.getDistance());
}
@@ -4493,6 +4497,7 @@ void ADSBDemodGUI::applyMapSettings()
// Create the map using the specified provider
QQmlProperty::write(item, "smoothing", MainCore::instance()->getSettings().getMapSmoothing());
+ QQmlProperty::write(item, "aircraftMinZoomLevel", m_settings.m_aircraftMinZoom);
QQmlProperty::write(item, "mapProvider", m_settings.m_mapProvider);
QVariantMap parameters;
QString mapType;
diff --git a/plugins/channelrx/demodadsb/adsbdemodsettings.cpp b/plugins/channelrx/demodadsb/adsbdemodsettings.cpp
index 250a7801b..6312c319b 100644
--- a/plugins/channelrx/demodadsb/adsbdemodsettings.cpp
+++ b/plugins/channelrx/demodadsb/adsbdemodsettings.cpp
@@ -90,7 +90,7 @@ void ADSBDemodSettings::resetToDefaults()
}
m_logFilename = "adsb_log.csv";
m_logEnabled = false;
- m_airspaces = QStringList({"A", "D", "TMZ"});
+ m_airspaces = QStringList({"CTR"});
m_airspaceRange = 500.0f;
#ifdef LINUX
m_mapProvider = "mapboxgl"; // osm maps do not work in some versions of Linux https://github.com/f4exb/sdrangel/issues/1169 & 1369
@@ -102,6 +102,7 @@ void ADSBDemodSettings::resetToDefaults()
m_displayPhotos = true;
m_verboseModelMatching = false;
m_airfieldElevation = 0;
+ m_aircraftMinZoom = 11;
m_workspaceIndex = 0;
m_hidden = false;
}
@@ -185,6 +186,7 @@ QByteArray ADSBDemodSettings::serialize() const
s.writeBool(61, m_hidden);
s.writeString(62, m_checkWXAPIKey);
s.writeString(63, m_mapProvider);
+ s.writeS32(64, m_aircraftMinZoom);
for (int i = 0; i < ADSBDEMOD_COLUMNS; i++) {
s.writeS32(100 + i, m_columnIndexes[i]);
@@ -277,7 +279,7 @@ bool ADSBDemodSettings::deserialize(const QByteArray& data)
d.readString(36, &m_logFilename, "adsb_log.csv");
d.readBool(37, &m_logEnabled, false);
- d.readString(38, &string, "A D TMZ");
+ d.readString(38, &string, "CTR");
m_airspaces = string.split(" ");
d.readFloat(39, &m_airspaceRange, 500.0f);
d.readS32(40, (int *)&m_mapType, (int)AVIATION_LIGHT);
@@ -316,6 +318,7 @@ bool ADSBDemodSettings::deserialize(const QByteArray& data)
d.readBool(61, &m_hidden, false);
d.readString(62, &m_checkWXAPIKey, "");
d.readString(63, &m_mapProvider, "osm");
+ d.readS32(64, &m_aircraftMinZoom, 11);
#ifdef LINUX
if (m_mapProvider == "osm") {
m_mapProvider = "mapboxgl";
diff --git a/plugins/channelrx/demodadsb/adsbdemodsettings.h b/plugins/channelrx/demodadsb/adsbdemodsettings.h
index c8f0b7650..54af2b81e 100644
--- a/plugins/channelrx/demodadsb/adsbdemodsettings.h
+++ b/plugins/channelrx/demodadsb/adsbdemodsettings.h
@@ -186,6 +186,7 @@ struct ADSBDemodSettings
Serializable *m_rollupState;
bool m_verboseModelMatching;
int m_airfieldElevation; //!< QFE in ft so aircraft takeoff/land from correct position
+ int m_aircraftMinZoom;
ADSBDemodSettings();
void resetToDefaults();
diff --git a/plugins/channelrx/demodadsb/map/map.qml b/plugins/channelrx/demodadsb/map/map.qml
index 54d491261..7bb791629 100644
--- a/plugins/channelrx/demodadsb/map/map.qml
+++ b/plugins/channelrx/demodadsb/map/map.qml
@@ -8,6 +8,7 @@ import QtGraphicalEffects 1.12
Item {
id: qmlMap
property int aircraftZoomLevel: 11
+ property int aircraftMinZoomLevel: 11
property int airportZoomLevel: 11
property string mapProvider: "osm"
property variant mapPtr
@@ -104,13 +105,16 @@ Item {
}
onZoomLevelChanged: {
+ if (zoomLevel > aircraftMinZoomLevel) {
+ aircraftZoomLevel = zoomLevel
+ } else {
+ aircraftZoomLevel = aircraftMinZoomLevel
+ }
if (zoomLevel > 11) {
station.zoomLevel = zoomLevel
- aircraftZoomLevel = zoomLevel
airportZoomLevel = zoomLevel
} else {
station.zoomLevel = 11
- aircraftZoomLevel = 11
airportZoomLevel = 11
}
}