From 1ba940c1a45f610fd7f82c9552a47671aad6f63f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Janne=20=C3=84n=C3=A4kk=C3=A4l=C3=A4?= Date: Tue, 27 Apr 2010 13:37:25 +0300 Subject: [PATCH] Added feature: Show travelled distance in routesavedialog and routedialog. --- Client/gpsdata.cpp | 10 ++++++++++ Client/gpsdata.h | 3 +++ Client/routedialog.cpp | 2 +- Client/routedialog.h | 1 - Client/routedialog.ui | 32 ++++++++++++++++++++++++++++++++ Client/routesavedialog.cpp | 24 ++++++++++++++++++++++++ Client/routesavedialog.h | 2 ++ Client/routesavedialog.ui | 21 +++++++++++++++++++++ 8 files changed, 93 insertions(+), 2 deletions(-) diff --git a/Client/gpsdata.cpp b/Client/gpsdata.cpp index 36dd60c..abd4141 100644 --- a/Client/gpsdata.cpp +++ b/Client/gpsdata.cpp @@ -73,6 +73,7 @@ void GPSData::resetAll() routeStopTime = ""; recordingStatus = false; roundCounter = 0; + distance = 0; } /** @@ -134,6 +135,7 @@ void GPSData::agnss() if (!routeTempFile.open(QIODevice::Append | QIODevice::Text)) return; + distance += location->distance_between_two_points(latitudePrevious, longitudePrevious, latitude, longitude); writeRouteXml(&routeTempFile, 0); roundCounter ++; routeTempFile.close(); @@ -278,3 +280,11 @@ void GPSData::writeRouteXml(QIODevice *device, int round) xmlwriter.writeEndDocument(); } } + +/** + *This function returns distance traveled since recording started. + */ +double GPSData::getDistanceTraveled() +{ + return distance; +} diff --git a/Client/gpsdata.h b/Client/gpsdata.h index f7b40e8..0327c45 100644 --- a/Client/gpsdata.h +++ b/Client/gpsdata.h @@ -26,6 +26,8 @@ public: void stopRouteRecording(); int roundCounter; //testing, move private!!! + double getDistanceTraveled(); + private: Maemo5Location *location; void resetAll(); @@ -50,6 +52,7 @@ private: double epc; //Climb accuracy in m/s. double latitudePrevious; double longitudePrevious; + double distance; QString routeStartTime; QString routeStopTime; QString sLatitudeNow; diff --git a/Client/routedialog.cpp b/Client/routedialog.cpp index da4853e..dbe0772 100644 --- a/Client/routedialog.cpp +++ b/Client/routedialog.cpp @@ -170,7 +170,6 @@ qreal countDistance(Vector *p1, Vector *p2) /** * Constructor of this class. */ -//RouteDialog::RouteDialog(QWidget *parent) : RouteDialog::RouteDialog(RouteSaveDialog *parent) : QDialog(parent), ui(new Ui::RouteDialog) { @@ -198,6 +197,7 @@ RouteDialog::RouteDialog(RouteSaveDialog *parent) : // Set average speed ui->avgSpeedValueLabel->setText(QString::number(parent->getAverageSpeed()) + " km/h"); + ui->distanceValueLabel->setText(parent->getDistanceTraveled() + " km"); } /** diff --git a/Client/routedialog.h b/Client/routedialog.h index 2b9aa4c..b3250d7 100644 --- a/Client/routedialog.h +++ b/Client/routedialog.h @@ -22,7 +22,6 @@ class RouteDialog : public QDialog { Q_OBJECT public: - //RouteDialog(QWidget *parent = 0); RouteDialog(RouteSaveDialog *parent = 0); ~RouteDialog(); bool readRouteFromFile( QString &routeFile); diff --git a/Client/routedialog.ui b/Client/routedialog.ui index d7fb136..e89d67d 100644 --- a/Client/routedialog.ui +++ b/Client/routedialog.ui @@ -159,6 +159,38 @@ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + 560 + 260 + 135 + 31 + + + + distance + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 560 + 230 + 131 + 31 + + + + Distance: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + diff --git a/Client/routesavedialog.cpp b/Client/routesavedialog.cpp index 3153b21..6d355e6 100644 --- a/Client/routesavedialog.cpp +++ b/Client/routesavedialog.cpp @@ -60,6 +60,7 @@ RouteSaveDialog::RouteSaveDialog(QWidget *parent) : ui->labelRoutePicture->setVisible(0); ui->labelGpsSpeed->setVisible(0); //GPS speed label ui->labelGpsAvgSpeed->setVisible(0); //GPS average speed label + ui->labelDistance->setVisible(0); //GPS distance label ui->labelSignalStrength->setText(""); //GPS signal strength label timerRoutePicture = new QTimer(); timerRoutePicture->setInterval(400); @@ -160,6 +161,9 @@ void RouteSaveDialog::on_buttonRouteStartStop_clicked() ui->labelGpsSpeed->setVisible(0); ui->labelGpsAvgSpeed->setVisible(0); + //GPS distance label + ui->labelDistance->setVisible(0); + //Stop route recording gpsData->stopRouteRecording(); @@ -248,6 +252,11 @@ void RouteSaveDialog::gpsStatus() ui->labelGpsAvgSpeed->setVisible(1); speedCount++; + //Set distance traveled. + distanceString.sprintf("%.3f", gpsData->getDistanceTraveled()); + ui->labelDistance->setText(distanceString + " km"); + ui->labelDistance->setVisible(1); + //Start route recording gpsData->startRouteRecording(); } @@ -268,6 +277,9 @@ void RouteSaveDialog::gpsStatus() //Set GPS speed labels in visible ui->labelGpsSpeed->setVisible(0); ui->labelGpsAvgSpeed->setVisible(0); + + //GPS distance label + ui->labelDistance->setVisible(0); } } else //If stop button clicked @@ -287,6 +299,9 @@ void RouteSaveDialog::gpsStatus() //Set GPS speed labels in visible ui->labelGpsSpeed->setVisible(0); ui->labelGpsAvgSpeed->setVisible(0); + + //GPS distance label + ui->labelDistance->setVisible(0); } } @@ -332,3 +347,12 @@ double RouteSaveDialog::getAverageSpeed() { return averageSpeed; } + +/** + * This function return distance traveled in QString. + * @return QString distance traveled + */ +QString RouteSaveDialog::getDistanceTraveled() +{ + return distanceString; +} diff --git a/Client/routesavedialog.h b/Client/routesavedialog.h index 1dda5ff..bb1f189 100644 --- a/Client/routesavedialog.h +++ b/Client/routesavedialog.h @@ -31,6 +31,7 @@ public: RouteDialog *routeDialog; HelpRoutingDialog *helpRoutingDialog; double getAverageSpeed(); + QString getDistanceTraveled(); protected: void changeEvent(QEvent *e); @@ -42,6 +43,7 @@ private: GPSData *gpsData; Maemo5Location *location; QString gpsSpeed; + QString distanceString; QPixmap *pixmapRouteStop; QPixmap *pixmapRouteStart; QIcon *iconRouteStop; diff --git a/Client/routesavedialog.ui b/Client/routesavedialog.ui index 7c4ccbd..1537c1b 100644 --- a/Client/routesavedialog.ui +++ b/Client/routesavedialog.ui @@ -252,6 +252,27 @@ Qt::AlignCenter + + + + 350 + 250 + 241 + 91 + + + + + 36 + + + + Distance + + + Qt::AlignCenter + + -- 1.7.9.5