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 // SPDX-FileCopyrightText: 2012, 2013 Bernhard Beschow <bbeschow@cs.tu-berlin.de>
0006 
0007 #include "RunnerTask.h"
0008 
0009 #include "MarbleDebug.h"
0010 #include "ParsingRunner.h"
0011 #include "ParsingRunnerManager.h"
0012 #include "SearchRunner.h"
0013 #include "SearchRunnerManager.h"
0014 #include "ReverseGeocodingRunner.h"
0015 #include "ReverseGeocodingRunnerManager.h"
0016 #include "RoutingRunner.h"
0017 #include "RoutingRunnerManager.h"
0018 #include "routing/RouteRequest.h"
0019 
0020 namespace Marble
0021 {
0022 
0023 SearchTask::SearchTask( SearchRunner *runner, SearchRunnerManager *manager, const MarbleModel *model, const QString &searchTerm, const GeoDataLatLonBox &preferred ) :
0024     QObject(),
0025     m_runner( runner ),
0026     m_searchTerm( searchTerm ),
0027     m_preferredBbox( preferred )
0028 {
0029     connect( m_runner, SIGNAL(searchFinished(QVector<GeoDataPlacemark*>)),
0030              manager, SLOT(addSearchResult(QVector<GeoDataPlacemark*>)) );
0031     m_runner->setModel( model );
0032 }
0033 
0034 void SearchTask::run()
0035 {
0036     m_runner->search( m_searchTerm, m_preferredBbox );
0037     m_runner->deleteLater();
0038 
0039     emit finished( this );
0040 }
0041 
0042 ReverseGeocodingTask::ReverseGeocodingTask( ReverseGeocodingRunner *runner, ReverseGeocodingRunnerManager *manager, const MarbleModel *model, const GeoDataCoordinates &coordinates ) :
0043     QObject(),
0044     m_runner( runner ),
0045     m_coordinates( coordinates )
0046 {
0047     connect( m_runner, SIGNAL(reverseGeocodingFinished(GeoDataCoordinates,GeoDataPlacemark)),
0048              manager, SLOT(addReverseGeocodingResult(GeoDataCoordinates,GeoDataPlacemark)) );
0049     m_runner->setModel( model );
0050 }
0051 
0052 void ReverseGeocodingTask::run()
0053 {
0054     m_runner->reverseGeocoding( m_coordinates );
0055     m_runner->deleteLater();
0056 
0057     emit finished( this );
0058 }
0059 
0060 RoutingTask::RoutingTask( RoutingRunner *runner, RoutingRunnerManager *manager, const RouteRequest* routeRequest ) :
0061     QObject(),
0062     m_runner( runner ),
0063     m_routeRequest( routeRequest )
0064 {
0065     connect( m_runner, SIGNAL(routeCalculated(GeoDataDocument*)),
0066              manager, SLOT(addRoutingResult(GeoDataDocument*)) );
0067 }
0068 
0069 void RoutingTask::run()
0070 {
0071     m_runner->retrieveRoute( m_routeRequest );
0072     m_runner->deleteLater();
0073 
0074     emit finished( this );
0075 }
0076 
0077 ParsingTask::ParsingTask( ParsingRunner *runner, ParsingRunnerManager *manager, const QString& fileName, DocumentRole role ) :
0078     QObject(),
0079     m_runner( runner ),
0080     m_fileName( fileName ),
0081     m_role( role ),
0082     m_manager(manager)
0083 {
0084     connect(this, SIGNAL(parsed(GeoDataDocument*,QString)), m_manager, SLOT(addParsingResult(GeoDataDocument*,QString)));
0085 }
0086 
0087 void ParsingTask::run()
0088 {
0089     QString error;
0090     GeoDataDocument* document = m_runner->parseFile( m_fileName, m_role, error );
0091     emit parsed(document, error);
0092     m_runner->deleteLater();
0093     emit finished();
0094 }
0095 
0096 }
0097 
0098 #include "moc_RunnerTask.cpp"