File indexing completed on 2024-05-12 07:43:55
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2008 Henry de Valence <hdevalence@gmail.com> 0004 // SPDX-FileCopyrightText: 2010 Dennis Nienhüser <nienhueser@kde.org> 0005 // SPDX-FileCopyrightText: 2010-2013 Bernhard Beschow <bbeschow@cs.tu-berlin.de> 0006 // SPDX-FileCopyrightText: 2011 Thibaut Gridel <tgridel@free.fr> 0007 0008 #ifndef MARBLE_ROUTINGRUNNERMANAGER_H 0009 #define MARBLE_ROUTINGRUNNERMANAGER_H 0010 0011 #include <QObject> 0012 #include <QVector> 0013 0014 #include "marble_export.h" 0015 0016 namespace Marble 0017 { 0018 0019 class GeoDataDocument; 0020 class MarbleModel; 0021 class RouteRequest; 0022 class RoutingTask; 0023 0024 class MARBLE_EXPORT RoutingRunnerManager : public QObject 0025 { 0026 Q_OBJECT 0027 0028 public: 0029 /** 0030 * Constructor. 0031 * @param pluginManager The plugin manager that gives access to RunnerPlugins 0032 * @param parent Optional parent object 0033 */ 0034 explicit RoutingRunnerManager( const MarbleModel *marbleModel, QObject *parent = nullptr ); 0035 0036 ~RoutingRunnerManager() override; 0037 0038 /** 0039 * Download routes traversing the stopover points in the given route request 0040 * @see retrieveRoute is asynchronous with results returned using the 0041 * @see routeRetrieved signal. 0042 * @see searchRoute is blocking. 0043 * @see routingFinished signal indicates all runners are finished. 0044 */ 0045 void retrieveRoute( const RouteRequest *request ); 0046 QVector<GeoDataDocument *> searchRoute( const RouteRequest *request, int timeout = 30000 ); 0047 0048 Q_SIGNALS: 0049 /** 0050 * A route was retrieved 0051 */ 0052 void routeRetrieved( GeoDataDocument *route ); 0053 0054 /** 0055 * Emitted whenever all runners are finished for the query 0056 */ 0057 void routingFinished(); 0058 0059 private: 0060 Q_PRIVATE_SLOT( d, void addRoutingResult( GeoDataDocument *route ) ) 0061 Q_PRIVATE_SLOT( d, void cleanupRoutingTask( RoutingTask *task ) ) 0062 0063 class Private; 0064 friend class Private; 0065 Private *const d; 0066 }; 0067 0068 } 0069 0070 #endif