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 } }