X-Git-Url: http://git.maemo.org/git/?p=speedfreak;a=blobdiff_plain;f=Client%2Froutesavedialog.cpp;h=e0bfe7b8966b01132207d71d0d573bebbc8044be;hp=4082c771d5d864b12dff82952507f118133e0589;hb=ef6573877133287171c02d2e7b1232ff44ab804e;hpb=8dd088e5745d31b9b9032d4a467c74e10c6c3ab3 diff --git a/Client/routesavedialog.cpp b/Client/routesavedialog.cpp index 4082c77..e0bfe7b 100644 --- a/Client/routesavedialog.cpp +++ b/Client/routesavedialog.cpp @@ -1,16 +1,78 @@ +/* + * Route save dialog class + * + * @author Toni Jussila + * @copyright (c) 2010 Speed Freak team + * @license http://opensource.org/licenses/gpl-license.php GNU Public License + */ + #include "routesavedialog.h" #include "ui_routesavedialog.h" +/** + *Constructor of this class. + *@param QWidget pointer to parent object. By default the value is NULL. + */ RouteSaveDialog::RouteSaveDialog(QWidget *parent) : QDialog(parent), ui(new Ui::RouteSaveDialog) { ui->setupUi(this); + this->setWindowTitle("Tracking"); + + routeDialog = new RouteDialog; + + //Button settings + buttonStatus = true; + pixmapRouteStop = new QPixmap("Graphics/route_stop.png"); + pixmapRouteStart = new QPixmap("Graphics/route_start.png"); + iconRouteStop = new QIcon(*pixmapRouteStop); + iconRouteStart = new QIcon(*pixmapRouteStart); + QSize iconSize(125, 125); + ui->buttonRouteStartStop->setIconSize(iconSize); + ui->buttonRouteStartStop->setIcon(*iconRouteStart); + ui->buttonRouteStartStop->setAutoFillBackground(true); + ui->buttonRouteStartStop->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)"); + + //Satellite picture and label + ui->labelRouteSatelliteStatus->setVisible(0); + ui->labelRouteSatellitePicture->setVisible(0); + //ui->labelRouteSatellitePicture->setPixmap(QPixmap("Graphics/satellite_vista.png")); + timerSatellitePicture = new QTimer(); + timerSatellitePicture->setInterval(400); + connect(timerSatellitePicture, SIGNAL(timeout()),this, SLOT(timerSatellitePictureTimeout())); + + //Route picture and label + ui->labelRouteStatus->setVisible(0); + ui->labelRoutePicture->setVisible(0); + timerRoutePicture = new QTimer(); + timerRoutePicture->setInterval(400); + connect(timerRoutePicture, SIGNAL(timeout()),this, SLOT(timerRoutePictureTimeout())); + + //GPS speed label + ui->labelGpsSpeed->setVisible(0); + + //GPS + location = new Maemo5Location(this); + gpsData = new GPSData(location); + connect(location,SIGNAL(agnss()),this,SLOT(gpsStatus())); } +/** + *Destructor of this class. Deletes all dynamic objects and sets them to NULL. + */ RouteSaveDialog::~RouteSaveDialog() { delete ui; + delete timerSatellitePicture; + delete timerRoutePicture; + delete location; + delete gpsData; + delete routeDialog; + delete pixmapRouteStop; + delete pixmapRouteStart; + delete iconRouteStop; + delete iconRouteStart; } void RouteSaveDialog::changeEvent(QEvent *e) @@ -24,3 +86,150 @@ void RouteSaveDialog::changeEvent(QEvent *e) break; } } + +/** + *This slot function is called when route start/stop button clicked. + */ +void RouteSaveDialog::on_buttonRouteStartStop_clicked() +{ + //If start button clicked + if ( buttonStatus == true ) + { + buttonStatus = false; + ui->buttonRouteStartStop->setIcon(*iconRouteStop); + location->startPollingGPS(); + gpsStatus(); + } + else + { + buttonStatus = true; + ui->buttonRouteStartStop->setIcon(*iconRouteStart); + + //Satellite picture and label + ui->labelRouteSatelliteStatus->setText("Searching satellite"); + ui->labelRouteSatelliteStatus->setVisible(0); + ui->labelRouteSatellitePicture->setVisible(0); + timerSatellitePicture->stop(); + + //Route picture and label + ui->labelRouteStatus->setVisible(0); + ui->labelRoutePicture->setVisible(0); + timerRoutePicture->stop(); + location->stopPollingGPS(); + + QString routeFile = QString("routetemp.xml"); + if (routeDialog->readRouteFromFile( routeFile) == true) + { + routeDialog->show(); + } + + //GPS speed label + ui->labelGpsSpeed->setVisible(0); + + //Stop route recording + gpsData->stopRouteRecording(); + } +} + +/** + *This slot function is called when satellite picture timer timeout(400ms). + */ +void RouteSaveDialog::timerSatellitePictureTimeout() +{ + //If satellite picture visible. + if (ui->labelRouteSatellitePicture->isVisible() == 1) + { + ui->labelRouteSatelliteStatus->setVisible(0); + ui->labelRouteSatellitePicture->setVisible(0); + } + else + { + ui->labelRouteSatelliteStatus->setVisible(1); + ui->labelRouteSatellitePicture->setVisible(1); + } + timerSatellitePicture->start(); +} + +/** + *This slot function is called when route picture timer timeout(400ms). + */ +void RouteSaveDialog::timerRoutePictureTimeout() +{ + //If route picture visible. + if (ui->labelRoutePicture->isVisible() == 1) + { + ui->labelRouteStatus->setVisible(0); + ui->labelRoutePicture->setVisible(0); + } + else + { + ui->labelRouteStatus->setVisible(1); + ui->labelRoutePicture->setVisible(1); + } + timerRoutePicture->start(); +} + +void RouteSaveDialog::gpsStatus() +{ + //IF GPS start button clicked + if (buttonStatus == false) + { + //If GPS find 4 satellite. + if (location->getSatellitesInUse() >= 4) + { + //Satellite picture and label + ui->labelRouteSatelliteStatus->setText("GPS Ready"); + ui->labelRouteSatelliteStatus->setVisible(1); + ui->labelRouteSatellitePicture->setVisible(1); + timerSatellitePicture->stop(); + + //Route picture and label + ui->labelRouteStatus->setText("Recorded " + QString::number(gpsData->roundCounter) + " route point"); + ui->labelRouteStatus->setVisible(1); + ui->labelRoutePicture->setVisible(1); + timerRoutePicture->start(); + + //Set GPS speed. + gpsSpeed.sprintf("%.0f",location->getSpeed()); + ui->labelGpsSpeed->setText(gpsSpeed + " km/h"); + ui->labelGpsSpeed->setVisible(1); + + //Start route recording + gpsData->startRouteRecording(); + } + + //If GPS find less than 4 satellite. + else + { + //Satellite picture and label + ui->labelRouteSatelliteStatus->setText("Searching satellite"); + ui->labelRouteSatelliteStatus->setVisible(1); + ui->labelRouteSatellitePicture->setVisible(1); + timerSatellitePicture->start(); + + //Route picture and label + ui->labelRouteStatus->setVisible(0); + ui->labelRoutePicture->setVisible(0); + timerRoutePicture->stop(); + + //GPS speed label + ui->labelGpsSpeed->setVisible(0); + } + } + else + { + //Satellite picture and label + ui->labelRouteSatelliteStatus->setText("Searching satellite"); + ui->labelRouteSatelliteStatus->setVisible(0); + ui->labelRouteSatellitePicture->setVisible(0); + timerSatellitePicture->stop(); + + //Route picture and label + ui->labelRouteStatus->setVisible(0); + ui->labelRoutePicture->setVisible(0); + timerRoutePicture->stop(); + + //GPS speed label + ui->labelGpsSpeed->setVisible(0); + } +}