From 618abe587da29d6c88fddebd1d6b57f6a4f37a58 Mon Sep 17 00:00:00 2001 From: Max Waterman Date: Wed, 21 Apr 2010 08:37:25 +0300 Subject: [PATCH] Changes: parses comprehensive route data --- zouba/src/route_p.cpp | 145 +++++++++++++++++++++++++-------- zouba/src/routedata.h | 81 ++++++++++++++++-- zouba/src/uicontroller.cpp | 4 +- zouba/tests/ut_gpscontroller/Makefile | 2 +- zouba/tests/ut_route/ut_route.cpp | 94 ++++++++++++++++++--- 5 files changed, 273 insertions(+), 53 deletions(-) diff --git a/zouba/src/route_p.cpp b/zouba/src/route_p.cpp index b9783ab..e242e97 100644 --- a/zouba/src/route_p.cpp +++ b/zouba/src/route_p.cpp @@ -5,6 +5,7 @@ #include #include #include +#include RoutePrivate::RoutePrivate( QObject *parent ) : m_fromValid(false), @@ -22,66 +23,146 @@ RoutePrivate::~RoutePrivate() QList RoutePrivate::parseReply( const QByteArray &reply ) { qDebug() << "parsing route"; - QFile file( "/home/user/route.txt" ); - if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { - QTextStream out(&file); - out << reply; - file.close(); - } else { - qDebug() << "Could not open /home/user/route.txt"; - } - QList retVal; RouteData routeData; + LegData legData; QXmlStreamReader xml( reply ); QHash in; QHash have; - have[ "LINE" ] = false; - have[ "TIME" ] = false; + QStringList haveKeys; + QStringList inKeys; + + haveKeys + << "LINE" + << "TIME" + << "TRIP" + << "DEPARTURE" + << "ARRIVAL" + ; + + inKeys + << "ROUTE" + << "LINE" + << "STOP" + << "WALK" + << "POINT" + ; + + for ( int index=0; index haveKeys = have.uniqueKeys(); + for ( int haveKeysIndex=0; haveKeysIndex +#include + +struct LegData +{ + LegData() : + m_how(), + m_tripTime(), + m_tripDistance(), + m_departureTime(), + m_arrivalTime(), + m_lineCode() + { + }; + + LegData( QString how, QString tripTime, QString tripDistance, QString departureTime, QString arrivalTime, QString lineCode=QString() ) : + m_how(how), + m_tripTime(tripTime), + m_tripDistance(tripDistance), + m_departureTime(departureTime), + m_arrivalTime(arrivalTime), + m_lineCode(lineCode) + { + }; + + void clear() + { + m_how = ""; + m_tripTime = ""; + m_tripDistance = ""; + m_departureTime = ""; + m_arrivalTime = ""; + m_lineCode = ""; + }; + + QString m_how; + QString m_tripTime; + QString m_tripDistance; + QString m_departureTime; + QString m_arrivalTime; + QString m_lineCode; + +}; struct RouteData { RouteData(): - lineCode(), - arrivalTime() + m_tripTime(), + m_tripDistance(), + m_departureTime(), + m_lineCode(), + m_legData() + { + }; + + RouteData( QString tripTime, QString tripDistance, QString departureTime, QString lineCode ): + m_tripTime(tripTime), + m_tripDistance(tripDistance), + m_departureTime(departureTime), + m_lineCode(lineCode), + m_legData() { }; - RouteData( QString lineCode, QString arrivalTime ): - lineCode(lineCode), - arrivalTime(arrivalTime) + RouteData &operator <<(const LegData &legData) { + m_legData.append( legData ); + return *this; }; - QString lineCode; - QString arrivalTime; + void clear() + { + m_tripTime = ""; + m_tripDistance = ""; + m_departureTime = ""; + m_lineCode = ""; + m_legData.clear(); + }; + + QString m_tripTime; + QString m_tripDistance; + QString m_departureTime; + QString m_lineCode; + QList m_legData; + }; #endif // ROUTEDATA_H diff --git a/zouba/src/uicontroller.cpp b/zouba/src/uicontroller.cpp index 28d4232..f75b0a8 100644 --- a/zouba/src/uicontroller.cpp +++ b/zouba/src/uicontroller.cpp @@ -109,8 +109,8 @@ void UiController::displayRoute( const QList &routeData ) if ( isetEnabled( true ); } else { button->setEnabled( false ); diff --git a/zouba/tests/ut_gpscontroller/Makefile b/zouba/tests/ut_gpscontroller/Makefile index fbab136..0c74d29 100644 --- a/zouba/tests/ut_gpscontroller/Makefile +++ b/zouba/tests/ut_gpscontroller/Makefile @@ -1,6 +1,6 @@ ############################################################################# # Makefile for building: ut_gpscontroller -# Generated by qmake (2.01a) (Qt 4.6.2) on: Tue Apr 20 10:09:10 2010 +# Generated by qmake (2.01a) (Qt 4.6.2) on: Thu Apr 22 09:34:28 2010 # Project: ut_gpscontroller.pro # Template: app # Command: /usr/bin/qmake -unix -o Makefile ut_gpscontroller.pro diff --git a/zouba/tests/ut_route/ut_route.cpp b/zouba/tests/ut_route/ut_route.cpp index ed4cb45..0a47349 100644 --- a/zouba/tests/ut_route/ut_route.cpp +++ b/zouba/tests/ut_route/ut_route.cpp @@ -33,9 +33,27 @@ void Ut_Route::testParseReply() QCOMPARE( routeData.count(), expectedResults.count() ); - for( int index=0; index() - << RouteData( "65A", "18:20" ) - << RouteData( "102T", "18:26" ) - << RouteData( "110T", "18:34" ) + // Summary : TTime TDist First Vehicle + << ( RouteData( "14.411", "2510.063", "18:20", "65A" ) + // How TTime TDist Depart Arrive Line + << LegData( "WALK", "4.475", "357.069", "18:15", "18:20" ) + << LegData( "LINE", "5.000", "1760.931", "18:20", "18:25", "65A" ) + << LegData( "WALK", "4.936", "392.062", "18:25", "18:29" ) + ) + // Summary : TTime TDist First Vehicle + << ( RouteData( "13.411", "2501.497", "18:26", "102T" ) + // How TTime TDist Depart Arrive Line + << LegData( "WALK", "4.475", "357.069", "18:21", "18:26" ) + << LegData( "LINE", "4.000", "1751.582", "18:26", "18:30", "102T" ) + << LegData( "WALK", "4.936", "392.846", "18:30", "18:34" ) + ) + // Summary : TTime TDist First Vehicle + << ( RouteData( "13.411", "2501.497", "18:34", "110T" ) + // How TTime TDist Depart Arrive Line + << LegData( "WALK", "4.475", "357.069", "18:29", "18:34" ) + << LegData( "LINE", "4.000", "1751.582", "18:34", "18:38", "110T" ) + << LegData( "WALK", "4.936", "392.846", "18:38", "18:42" ) + ) ); QTest::newRow("route with bus change") << sampleInput[1] << ( QList() - << RouteData( "111", "08:18" ) - << RouteData( "111", "08:33" ) - << RouteData( "111T", "08:34" ) - << RouteData( "111", "08:50" ) - << RouteData( "111", "09:07" ) + // Summary : TTime TDist First Vehicle + << ( RouteData( "28.633", "8902.040", "08:18", "111" ) + // How TTime TDist Depart Arrive Line + << LegData( "WALK", "3.479", "254.753", "08:14", "08:18" ) + << LegData( "LINE", "8.000", "5225.092", "08:18", "08:26", "111" ) + << LegData( "LINE", "5.000", "2926.431", "08:32", "08:37", "121T" ) + << LegData( "WALK", "6.154", "495.764", "08:37", "08:43" ) + ) + // Summary : TTime TDist First Vehicle + << ( RouteData( "25.633", "8902.040", "08:33", "111" ) + // How TTime TDist Depart Arrive Line + << LegData( "WALK", "3.479", "254.753", "08:29", "08:33" ) + << LegData( "LINE", "8.000", "5225.092", "08:33", "08:41", "111" ) + << LegData( "LINE", "5.000", "2926.431", "08:44", "08:49", "102T" ) + << LegData( "WALK", "6.154", "495.764", "08:49", "08:55" ) + ) + // Summary : TTime TDist First Vehicle + << ( RouteData( "33.510", "11193.458", "08:34", "111T" ) + // How TTime TDist Depart Arrive Line + << LegData( "WALK", "2.356", "172.693", "08:31", "08:34" ) + << LegData( "LINE", "6.000", "3392.054", "08:34", "08:40", "111T" ) + << LegData( "LINE", "5.000", "4206.516", "08:43", "08:48", "112" ) + << LegData( "LINE", "5.000", "2926.431", "08:54", "08:59", "102T" ) + << LegData( "WALK", "6.154", "495.764", "08:59", "09:05" ) + ) + // Summary : TTime TDist First Vehicle + << ( RouteData( "29.633", "8902.040", "08:50", "111" ) + // How TTime TDist Depart Arrive Line + << LegData( "WALK", "3.479", "254.753", "08:46", "08:50" ) + << LegData( "LINE", "8.000", "5225.092", "08:50", "08:58", "111" ) + << LegData( "LINE", "5.000", "2926.431", "09:05", "09:10", "102T" ) + << LegData( "WALK", "6.154", "495.764", "09:10", "09:16" ) + ) + // Summary : TTime TDist First Vehicle + << ( RouteData( "29.633", "8902.040", "09:07", "111" ) + // How TTime TDist Depart Arrive Line + << LegData( "WALK", "3.479", "254.753", "09:03", "09:07" ) + << LegData( "LINE", "8.000", "5225.092", "09:07", "09:15", "111" ) + << LegData( "LINE", "5.000", "2926.431", "09:22", "09:27", "160T" ) + << LegData( "WALK", "6.154", "495.764", "09:27", "09:33" ) + ) ); } -- 1.7.9.5