File indexing completed on 2024-05-05 03:51:02

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2010 Dennis Nienhüser <nienhueser@kde.org>
0004 //
0005 
0006 
0007 #ifndef MARBLE_OSMNOMINATIMSEARCHRUNNER_H
0008 #define MARBLE_OSMNOMINATIMSEARCHRUNNER_H
0009 
0010 #include "SearchRunner.h"
0011 
0012 #include <QString>
0013 #include <QNetworkAccessManager>
0014 #include <QNetworkRequest>
0015 
0016 class QNetworkReply;
0017 class QDomNode;
0018 
0019 namespace Marble
0020 {
0021 class GeoDataExtendedData;
0022 
0023 class OsmNominatimRunner : public SearchRunner
0024 {
0025     Q_OBJECT
0026 public:
0027     explicit OsmNominatimRunner(QObject *parent = nullptr);
0028 
0029     ~OsmNominatimRunner() override;
0030 
0031     void search( const QString &searchTerm, const GeoDataLatLonBox &preferred ) override;
0032 
0033 private Q_SLOTS:
0034     // Forward a result to the search or reverse geocoding handler
0035     void handleResult( QNetworkReply* );
0036 
0037     // No results (or an error)
0038     void returnNoResults();
0039 
0040     void startSearch();
0041 
0042 private:
0043     static GeoDataExtendedData extractChildren(const QDomNode &node);
0044 
0045     QNetworkAccessManager m_manager;
0046     QNetworkRequest m_request;
0047 };
0048 
0049 }
0050 
0051 #endif