SVN commit 856408 by hdevalence: Get rid of MarbleRunnerResult and work directly with the placemarks. Todo: get icons working M +0 -1 CMakeLists.txt M +13 -16 MarbleRunnerManager.cpp M +4 -7 MarbleRunnerManager.h D MarbleRunnerResult.cpp D MarbleRunnerResult.h M +9 -14 runners/LatLonRunner.cpp M +0 -4 runners/LatLonRunner.h M +1 -1 runners/MarbleAbstractRunner.cpp M +8 -5 runners/MarbleAbstractRunner.h M +12 -16 runners/OnfRunner.cpp --- trunk/KDE/kdeedu/marble/src/lib/CMakeLists.txt #856407:856408 @@ -157,7 +157,6 @@ MapThemeSortFilterProxyModel.cpp MarbleRunnerManager.cpp - MarbleRunnerResult.cpp runners/MarbleAbstractRunner.cpp runners/LatLonRunner.cpp runners/OnfRunner.cpp --- trunk/KDE/kdeedu/marble/src/lib/MarbleRunnerManager.cpp #856407:856408 @@ -20,15 +20,17 @@ #include "MarbleRunnerManager.h" -#include "MarbleRunnerResult.h" #include "MarblePlacemarkModel.h" #include "PlaceMarkManager.h" +#include "PlaceMarkContainer.h" +#include "GeoDataPlacemark.h" #include "LatLonRunner.h" #include "OnfRunner.h" #include #include +#include #include @@ -38,8 +40,8 @@ MarbleRunnerManager::MarbleRunnerManager( QObject *parent ) : QObject(parent) { - qRegisterMetaType("MarbleRunnerResult"); - + qRegisterMetaType >("QVector"); + m_model = new MarblePlacemarkModel(0); m_activeRunners = 0; m_lastString = ""; @@ -50,8 +52,8 @@ m_latlonRunner->moveToThread(m_latlonRunner); connect( m_latlonRunner, SIGNAL( runnerStarted(QString) ), this, SLOT( slotRunnerStarted(QString) )); - connect( m_latlonRunner, SIGNAL( runnerFinished( MarbleRunnerResult ) ), - this, SLOT( slotRunnerFinished( MarbleRunnerResult ) )); + connect( m_latlonRunner, SIGNAL( runnerFinished( QVector ) ), + this, SLOT( slotRunnerFinished( QVector ) )); connect( this, SIGNAL( engage(QString) ), m_latlonRunner, SLOT( parse(QString) )); @@ -60,8 +62,8 @@ m_onfRunner->moveToThread(m_onfRunner); connect( m_onfRunner, SIGNAL( runnerStarted(QString) ), this, SLOT( slotRunnerStarted(QString) )); - connect( m_onfRunner, SIGNAL( runnerFinished( MarbleRunnerResult ) ), - this, SLOT( slotRunnerFinished( MarbleRunnerResult ) )); + connect( m_onfRunner, SIGNAL( runnerFinished( QVector ) ), + this, SLOT( slotRunnerFinished( QVector ) )); connect( this, SIGNAL( engage(QString) ), m_onfRunner, SLOT( parse(QString) )); } @@ -91,18 +93,13 @@ emit engage(text); } -void MarbleRunnerManager::slotRunnerFinished( MarbleRunnerResult result ) +void MarbleRunnerManager::slotRunnerFinished( QVector result ) { m_activeRunners--; qDebug() << "Runner finished, active runners: " << m_activeRunners; - if( result.score() == MarbleRunnerResult::NoMatch ) { - qDebug() << "[RunnerManager]" << result.runnerName() << "failed to match :("; - return; - } - qDebug() << "[RunnerManager]" << result.runnerName() << "reports match found (" - << static_cast(result.score()) << ") :D"; - //TODO: use MarbleRunnerResult::ResultType to list the objects in order - PlaceMarkContainer cont = result.placemarks(); + qDebug() << "Runner reports" << result.size() << "results"; + + PlaceMarkContainer cont( result, "Runner Results" ); m_model->addPlaceMarks( cont, false ); // qDebug() << "emit modelchanged"; emit modelChanged( m_model ); --- trunk/KDE/kdeedu/marble/src/lib/MarbleRunnerManager.h #856407:856408 @@ -21,18 +21,15 @@ #ifndef MARBLERUNNERMANAGER_H #define MARBLERUNNERMANAGER_H - -#include "MarbleRunnerResult.h" - #include +#include +#include -class QString; - namespace Marble { class MarblePlacemarkModel; -class PlaceMarkManager; +class GeoDataPlacemark; class LatLonRunner; class OnfRunner; @@ -54,7 +51,7 @@ //tells runners to make it so void engage(QString text); private slots: - void slotRunnerFinished(MarbleRunnerResult result); + void slotRunnerFinished(QVector result); void slotRunnerStarted(QString runnerName); private: int m_activeRunners; --- trunk/KDE/kdeedu/marble/src/lib/runners/LatLonRunner.cpp #856407:856408 @@ -21,13 +21,12 @@ #include "LatLonRunner.h" #include "MarbleAbstractRunner.h" -#include "MarbleRunnerResult.h" #include "GeoDataPlacemark.h" #include "GeoDataCoordinates.h" -#include "PlaceMarkContainer.h" #include #include +#include #include @@ -41,7 +40,7 @@ QString LatLonRunner::name() const { - return tr("Latitude / Longitude Runner"); + return "FIXME"; } LatLonRunner::~LatLonRunner() @@ -55,26 +54,22 @@ bool successful = false; GeoDataCoordinates coord = GeoDataCoordinates::fromString( input, successful ); - MarbleRunnerResult::Score score; GeoDataPlacemark *placemark = new GeoDataPlacemark(); placemark->setName( input ); qreal lon, lat; coord.geoCoordinates( lon, lat ); placemark->setCoordinate( lon, lat ); + QVector vector; + //TODO: FIXME if( successful ) { - score = MarbleRunnerResult::PerfectMatch; // matches regex - } else { - score = MarbleRunnerResult::NoMatch; //does not match + //TODO: set placemark icon + placemark->setPopularity( 1000000000 ); + placemark->setPopularityIndex( 18 ); + vector.append( placemark ); } - PlaceMarkContainer container; - container.setName( "Coordinate search result" ); - container.append( placemark ); - - MarbleRunnerResult result( container, score, name() ); - - emit runnerFinished( result ); + emit runnerFinished( vector ); } } --- trunk/KDE/kdeedu/marble/src/lib/runners/LatLonRunner.h #856407:856408 @@ -23,10 +23,6 @@ #include "MarbleAbstractRunner.h" -class QThread; -class QString; -class QStringList; - namespace Marble { --- trunk/KDE/kdeedu/marble/src/lib/runners/MarbleAbstractRunner.cpp #856407:856408 @@ -41,7 +41,7 @@ QString MarbleAbstractRunner::name() const { - return QString("Abstract Runner"); + return "FIXME"; } void MarbleAbstractRunner::run() --- trunk/KDE/kdeedu/marble/src/lib/runners/MarbleAbstractRunner.h #856407:856408 @@ -21,14 +21,17 @@ #ifndef MARBLEABSTRACTRUNNER_H #define MARBLEABSTRACTRUNNER_H -#include "MarbleRunnerResult.h" #include +#include class QString; namespace Marble { + +class GeoDataPlacemark; + /** * This class is the base class for all Marble Runners. */ @@ -45,7 +48,8 @@ */ ~MarbleAbstractRunner(); /** - * This function should return the user-visible name for this runner + * This function gives the name of the icon for this runner + * @return the name of the icon of the runner */ virtual QString name() const; @@ -64,18 +68,17 @@ signals: /** * This is emitted to indicate that the runner has started to work. - * @param runnerName the user-visible name for the runner. + * @param runnerName the name of the icon for the runner. * @see parse() * @see name() */ void runnerStarted(QString runnerName); /** * This is emitted to indicate that the runner has finished. - * If the parsing failed, @p result should have MarbleRunnerResult::NoMatch * @param result the result of the parsing. * @see parse() */ - void runnerFinished(MarbleRunnerResult result); + void runnerFinished(QVector result); }; } --- trunk/KDE/kdeedu/marble/src/lib/runners/OnfRunner.cpp #856407:856408 @@ -21,13 +21,13 @@ #include "OnfRunner.h" #include "MarbleAbstractRunner.h" -#include "MarbleRunnerResult.h" #include "GeoOnfParser.h" #include "GeoDataDocument.h" -#include "PlaceMarkContainer.h" +#include "GeoDataPlacemark.h" #include #include +#include #include #include @@ -41,7 +41,6 @@ OnfRunner::OnfRunner( QObject *parent ) : MarbleAbstractRunner( parent ) { - qRegisterMetaType(); m_http = new QHttp("gazetteer.openstreetmap.org"); m_buffer = 0; @@ -65,9 +64,8 @@ //The manager needs to know when parsing starts and stops //in order to have a balanced count of active runners. So //we emit runnerFinished() to balance the previous failed runnerStarted() - MarbleRunnerResult fail; - fail.setRunnerName( name() ); - emit runnerFinished( fail ); + QVector empty; + emit runnerFinished( empty ); return; } @@ -119,17 +117,15 @@ GeoDataDocument *results = static_cast( parser.releaseDocument() ); Q_ASSERT( results ); - - PlaceMarkContainer container( results->placemarks(), "ONF Search Results" ); - MarbleRunnerResult result; - - if( container.isEmpty() ) { - result = MarbleRunnerResult( container, MarbleRunnerResult::NoMatch, name() ); - } else { - result = MarbleRunnerResult( container, MarbleRunnerResult::PerfectMatch, name() ); + + QVector placemarks = results->placemarks(); + //TODO: get icons working +/* + foreach( GeoDataPlacemark* placemark, placemarks ) { + //SET ICON using name() } - - emit runnerFinished( result ); +*/ + emit runnerFinished( placemarks ); return; }