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