From c03a52451af69d13ff4fc038718d726e157a47cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uro=C5=A1=20Prelo=C5=BEnik?= Date: Tue, 25 Feb 2025 18:42:57 +0100 Subject: [PATCH] - Fix formLayout to gridLayout - override fetchResults but doesn't get called. Help needed! --- src/app/locator/qgsnominatimlocatorfilter.cpp | 23 +++++++++++++++---- src/app/locator/qgsnominatimlocatorfilter.h | 1 + 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/app/locator/qgsnominatimlocatorfilter.cpp b/src/app/locator/qgsnominatimlocatorfilter.cpp index 2661279b8600..15289b8761de 100644 --- a/src/app/locator/qgsnominatimlocatorfilter.cpp +++ b/src/app/locator/qgsnominatimlocatorfilter.cpp @@ -19,6 +19,7 @@ #include "moc_qgsnominatimlocatorfilter.cpp" #include "qgsgeocoder.h" #include "qgslocatorfilter.h" +#include "qgsnominatimgeocoder.h" #include "qgssettings.h" #include "qgsmessagebaritem.h" #include "qgsmessagebar.h" @@ -35,6 +36,17 @@ QgsNominatimLocatorFilter::QgsNominatimLocatorFilter( QgsGeocoderInterface *geoc setUseWithoutPrefix( false ); } +void QgsNominatimLocatorFilter::fetchResults(const QString &string, const QgsLocatorContext &context, QgsFeedback *feedback) +{ + QgsSettings settings; + QString countryCodes = settings.value( "locator_filters/nominatim_geocoder/country_codes", "", QgsSettings::App ).toString().trimmed(); + + QgsNominatimGeocoder *nominatimGeocoder = dynamic_cast( geocoder() ); + nominatimGeocoder->setCountryCodes( countryCodes ); + + QgsAbstractGeocoderLocatorFilter::fetchResults( string, context, feedback); +} + void QgsNominatimLocatorFilter::triggerResult( const QgsLocatorResult &result ) { QgsSettings settings; @@ -58,17 +70,20 @@ void QgsNominatimLocatorFilter::openConfigWidget( QWidget *parent ) auto dlg = std::make_unique( parent ); dlg->setWindowTitle( "Nominatim Geocoder Country Codes" ); - QGridLayout *formLayout = new QGridLayout; + QGridLayout *layout = new QGridLayout; + layout->setSizeConstraint(QLayout::SetFixedSize); + QLabel *label = new QLabel( tr( "Two letter Country Codes (comma-separated)" ) ); QLineEdit *countryCodesEdit = new QLineEdit( dlg.get() ); // Load existing settings QgsSettings settings; countryCodesEdit->setText( settings.value( "locator_filters/nominatim_geocoder/country_codes", "", QgsSettings::App ).toString() ); - formLayout->addRow( tr( "Two letter Country Codes (comma-separated)" ), countryCodesEdit ); + layout->addWidget( label ); + layout->addWidget( countryCodesEdit ); QDialogButtonBox *buttonbBox = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, dlg.get() ); - formLayout->addRow( buttonbBox ); - dlg->setLayout( formLayout ); + layout->addWidget( buttonbBox ); + dlg->setLayout( layout ); // Save settings when dialog accepted connect( buttonbBox, &QDialogButtonBox::accepted, dlg.get(), [&]() { diff --git a/src/app/locator/qgsnominatimlocatorfilter.h b/src/app/locator/qgsnominatimlocatorfilter.h index 04451272241c..8d9fda63d3bc 100644 --- a/src/app/locator/qgsnominatimlocatorfilter.h +++ b/src/app/locator/qgsnominatimlocatorfilter.h @@ -29,6 +29,7 @@ class APP_EXPORT QgsNominatimLocatorFilter : public QgsGeocoderLocatorFilter public: QgsNominatimLocatorFilter( QgsGeocoderInterface *geocoder, QgsMapCanvas *canvas ); + void fetchResults( const QString &string, const QgsLocatorContext &context, QgsFeedback *feedback ) override; void triggerResult( const QgsLocatorResult &result ) override; bool hasConfigWidget() const override { return true; } void openConfigWidget( QWidget *parent ) override;