File indexing completed on 2024-04-21 03:49:54
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2010 Dennis Nienhüser <nienhueser@kde.org> 0004 // SPDX-FileCopyrightText: 2011 Thibaut Gridel <tgridel@free.fr> 0005 0006 #ifndef MARBLE_RUNNERTASK_H 0007 #define MARBLE_RUNNERTASK_H 0008 0009 #include "GeoDataCoordinates.h" 0010 #include "GeoDataDocument.h" 0011 #include "GeoDataLatLonBox.h" 0012 0013 #include <QRunnable> 0014 #include <QString> 0015 0016 namespace Marble 0017 { 0018 0019 class MarbleModel; 0020 class ParsingRunner; 0021 class SearchRunner; 0022 class ReverseGeocodingRunner; 0023 class RouteRequest; 0024 class RoutingRunner; 0025 class ParsingRunnerManager; 0026 class SearchRunnerManager; 0027 class ReverseGeocodingRunnerManager; 0028 class RoutingRunnerManager; 0029 0030 /** A RunnerTask that executes a placemark search */ 0031 class SearchTask : public QObject, public QRunnable 0032 { 0033 Q_OBJECT 0034 0035 public: 0036 SearchTask( SearchRunner *runner, SearchRunnerManager *manager, const MarbleModel *model, const QString &searchTerm, const GeoDataLatLonBox &preferred ); 0037 0038 /** 0039 * @reimp 0040 */ 0041 void run() override; 0042 0043 Q_SIGNALS: 0044 void finished( SearchTask *task ); 0045 0046 private: 0047 SearchRunner *const m_runner; 0048 QString m_searchTerm; 0049 GeoDataLatLonBox m_preferredBbox; 0050 }; 0051 0052 /** A RunnerTask that executes reverse geocoding */ 0053 class ReverseGeocodingTask : public QObject, public QRunnable 0054 { 0055 Q_OBJECT 0056 0057 public: 0058 ReverseGeocodingTask( ReverseGeocodingRunner*runner, ReverseGeocodingRunnerManager *manager, const MarbleModel *model, const GeoDataCoordinates &coordinates ); 0059 0060 /** 0061 * @reimp 0062 */ 0063 void run() override; 0064 0065 Q_SIGNALS: 0066 void finished( ReverseGeocodingTask *task ); 0067 0068 private: 0069 ReverseGeocodingRunner *const m_runner; 0070 GeoDataCoordinates m_coordinates; 0071 }; 0072 0073 0074 /** A RunnerTask that executes a route calculation */ 0075 class RoutingTask : public QObject, public QRunnable 0076 { 0077 Q_OBJECT 0078 0079 public: 0080 RoutingTask( RoutingRunner *runner, RoutingRunnerManager *manager, const RouteRequest* routeRequest ); 0081 0082 /** 0083 * @reimp 0084 */ 0085 void run() override; 0086 0087 Q_SIGNALS: 0088 void finished( RoutingTask *task ); 0089 0090 private: 0091 RoutingRunner *const m_runner; 0092 const RouteRequest *const m_routeRequest; 0093 }; 0094 0095 /** A RunnerTask that executes a file Parsing */ 0096 class ParsingTask : public QObject, public QRunnable 0097 { 0098 Q_OBJECT 0099 0100 public: 0101 ParsingTask( ParsingRunner *runner, ParsingRunnerManager *manager, const QString& fileName, DocumentRole role ); 0102 0103 /** 0104 * @reimp 0105 */ 0106 void run() override; 0107 0108 Q_SIGNALS: 0109 void parsed(GeoDataDocument* document, const QString &error); 0110 void finished(); 0111 0112 private: 0113 ParsingRunner *const m_runner; 0114 QString m_fileName; 0115 DocumentRole m_role; 0116 ParsingRunnerManager* m_manager; 0117 }; 0118 0119 } 0120 0121 #endif