/src/app/locator/qgsnominatimlocatorfilter.cpp

https://github.com/ricardogsilva/Quantum-GIS · C++ · 53 lines · 30 code · 8 blank · 15 comment · 1 complexity · 33bb29238aaa1a5af7a79ddc4bc156ae MD5 · raw file

  1. /***************************************************************************
  2. qgsnominatimlocatorfilters.cpp
  3. ----------------------------
  4. begin : May 2017
  5. copyright : (C) 2017 by Nyall Dawson
  6. email : nyall dot dawson at gmail dot com
  7. ***************************************************************************/
  8. /***************************************************************************
  9. * *
  10. * This program is free software; you can redistribute it and/or modify *
  11. * it under the terms of the GNU General Public License as published by *
  12. * the Free Software Foundation; either version 2 of the License, or *
  13. * (at your option) any later version. *
  14. * *
  15. ***************************************************************************/
  16. #include "qgsnominatimlocatorfilter.h"
  17. #include "qgssettings.h"
  18. #include "qgsmessagebaritem.h"
  19. #include "qgsmessagebar.h"
  20. #include "qgisapp.h"
  21. #include <QDesktopServices>
  22. #include <QPushButton>
  23. QgsNominatimLocatorFilter::QgsNominatimLocatorFilter( QgsGeocoderInterface *geocoder, QgsMapCanvas *canvas )
  24. : QgsGeocoderLocatorFilter( QStringLiteral( "nominatimgeocoder" ), tr( "Nominatim Geocoder" ), QStringLiteral( ">" ), geocoder, canvas )
  25. {
  26. setFetchResultsDelay( 1000 );
  27. setUseWithoutPrefix( false );
  28. }
  29. void QgsNominatimLocatorFilter::triggerResult( const QgsLocatorResult &result )
  30. {
  31. QgsSettings settings;
  32. if ( !settings.value( "locator_filters/nominatim_geocoder/attribution_shown", false, QgsSettings::App ).toBool() )
  33. {
  34. settings.setValue( "locator_filters/nominatim_geocoder/attribution_shown", true, QgsSettings::App );
  35. QgsMessageBarItem *messageWidget = QgisApp::instance()->messageBar()->createMessage( tr( "The Nominatim geocoder data is made available by OpenStreetMap Foundation and contributors." ) );
  36. QPushButton *learnMoreButton = new QPushButton( tr( "Learn more" ) );
  37. connect( learnMoreButton, &QPushButton::clicked, learnMoreButton, [ = ]
  38. {
  39. QDesktopServices::openUrl( QStringLiteral( "https://nominatim.org/" ) );
  40. } );
  41. messageWidget->layout()->addWidget( learnMoreButton );
  42. QgisApp::instance()->messageBar()->pushWidget( messageWidget, Qgis::MessageLevel::Info );
  43. }
  44. QgsGeocoderLocatorFilter::triggerResult( result );
  45. }