From 633676709791ebb0798f5f27192ce1c3141bec96 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Tue, 12 Mar 2024 14:03:51 +0000 Subject: [PATCH 1/2] CRightClickEnabler: Prevent duplicate events for right click and tap and hold on Linux --- sdrgui/gui/crightclickenabler.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/sdrgui/gui/crightclickenabler.cpp b/sdrgui/gui/crightclickenabler.cpp index 8a6c6b6fb..d7624c383 100644 --- a/sdrgui/gui/crightclickenabler.cpp +++ b/sdrgui/gui/crightclickenabler.cpp @@ -38,21 +38,18 @@ bool CRightClickEnabler::eventFilter(QObject *obj, QEvent *event) { auto mouseEvent = (QMouseEvent*) event; + if (mouseEvent->source() == Qt::MouseEventNotSynthesized) { + m_mousePressed = true; + } else { + m_mousePressed = false; // Mouse event generated from touch event + } + if (mouseEvent->button() == Qt::RightButton) { emit rightClick(mouseEvent->globalPos()); mouseEvent->setAccepted(true); return true; } - - if (mouseEvent->button() == Qt::LeftButton) - { - if (mouseEvent->source() == Qt::MouseEventNotSynthesized) { - m_mousePressed = true; - } else { - m_mousePressed = false; // Mouse event generated from touch event - } - } } else if (event->type() == QEvent::MouseButtonRelease) { @@ -61,6 +58,7 @@ bool CRightClickEnabler::eventFilter(QObject *obj, QEvent *event) if (mouseEvent->button() == Qt::RightButton) { mouseEvent->setAccepted(true); + m_mousePressed = false; return true; } From 10c98649026b91954e69ec636c8724e12289b68d Mon Sep 17 00:00:00 2001 From: srcejon Date: Tue, 12 Mar 2024 14:10:56 +0000 Subject: [PATCH 2/2] ADS-B: Only list available maps. --- plugins/channelrx/demodadsb/CMakeLists.txt | 2 +- .../demodadsb/adsbdemoddisplaydialog.cpp | 15 ++++++++++++++- plugins/channelrx/demodadsb/adsbdemodgui.cpp | 17 ++++++++++++++--- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/plugins/channelrx/demodadsb/CMakeLists.txt b/plugins/channelrx/demodadsb/CMakeLists.txt index 6d2e72368..331630c1d 100644 --- a/plugins/channelrx/demodadsb/CMakeLists.txt +++ b/plugins/channelrx/demodadsb/CMakeLists.txt @@ -60,7 +60,7 @@ if(NOT SERVER_MODE) ) set(TARGET_NAME demodadsb) - set(TARGET_LIB Qt::Widgets Qt::Quick Qt::QuickWidgets Qt::Positioning Qt::TextToSpeech) + set(TARGET_LIB Qt::Widgets Qt::Quick Qt::QuickWidgets Qt::Positioning Qt::Location Qt::TextToSpeech) set(TARGET_LIB_GUI "sdrgui") set(INSTALL_FOLDER ${INSTALL_PLUGINS_DIR}) else() diff --git a/plugins/channelrx/demodadsb/adsbdemoddisplaydialog.cpp b/plugins/channelrx/demodadsb/adsbdemoddisplaydialog.cpp index 0c170fdfe..64017ae34 100644 --- a/plugins/channelrx/demodadsb/adsbdemoddisplaydialog.cpp +++ b/plugins/channelrx/demodadsb/adsbdemoddisplaydialog.cpp @@ -16,6 +16,7 @@ /////////////////////////////////////////////////////////////////////////////////// #include +#include #include #include "adsbdemoddisplaydialog.h" @@ -28,6 +29,15 @@ ADSBDemodDisplayDialog::ADSBDemodDisplayDialog(ADSBDemodSettings *settings, QWid m_fontSize(settings->m_tableFontSize) { ui->setupUi(this); + + QStringList mapProviders = QGeoServiceProvider::availableServiceProviders(); + if (!mapProviders.contains("osm")) { + ui->mapProvider->removeItem(ui->mapProvider->findText("osm")); + } + if (!mapProviders.contains("mapboxgl")) { + ui->mapProvider->removeItem(ui->mapProvider->findText("mapboxgl")); + } + ui->timeout->setValue(settings->m_removeTimeout); ui->aircraftMinZoom->setValue(settings->m_aircraftMinZoom); ui->airportRange->setValue(settings->m_airportRange); @@ -46,7 +56,10 @@ ADSBDemodDisplayDialog::ADSBDemodDisplayDialog(ADSBDemodSettings *settings, QWid } } ui->airspaceRange->setValue(settings->m_airspaceRange); - ui->mapProvider->setCurrentText(settings->m_mapProvider); + int idx = ui->mapProvider->findText(settings->m_mapProvider); + if (idx != -1) { + ui->mapProvider->setCurrentText(settings->m_mapProvider); + } ui->mapType->setCurrentIndex((int)settings->m_mapType); ui->navAids->setChecked(settings->m_displayNavAids); ui->atcCallsigns->setChecked(settings->m_atcCallsigns); diff --git a/plugins/channelrx/demodadsb/adsbdemodgui.cpp b/plugins/channelrx/demodadsb/adsbdemodgui.cpp index c77b38f5e..a5737f5cb 100644 --- a/plugins/channelrx/demodadsb/adsbdemodgui.cpp +++ b/plugins/channelrx/demodadsb/adsbdemodgui.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include "ui_adsbdemodgui.h" #include "device/deviceapi.h" @@ -4725,14 +4726,24 @@ void ADSBDemodGUI::applyMapSettings() zoom = 10.0; } + // Check requested map provider is available - if not, try the other + QString mapProvider = m_settings.m_mapProvider; + QStringList mapProviders = QGeoServiceProvider::availableServiceProviders(); + if ((mapProvider == "osm") && (!mapProviders.contains(mapProvider))) { + mapProvider = "mapboxgl"; + } + if ((mapProvider == "mapboxgl") && (!mapProviders.contains(mapProvider))) { + mapProvider = "osm"; + } + // 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); + QQmlProperty::write(item, "mapProvider", mapProvider); QVariantMap parameters; QString mapType; - if (m_settings.m_mapProvider == "osm") + if (mapProvider == "osm") { // Use our repo, so we can append API key and redefine transmit maps parameters["osm.mapping.providersrepository.address"] = QString("http://127.0.0.1:%1/").arg(m_osmPort); @@ -4760,7 +4771,7 @@ void ADSBDemodGUI::applyMapSettings() break; } } - else if (m_settings.m_mapProvider == "mapboxgl") + else if (mapProvider == "mapboxgl") { switch (m_settings.m_mapType) {