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