2 * Route save dialog class
4 * @author Toni Jussila <toni.jussila@fudeco.com>
5 * @copyright (c) 2010 Speed Freak team
6 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
9 #include "routesavedialog.h"
10 #include "ui_routesavedialog.h"
14 * Constructor of this class.
15 * @param QWidget pointer to parent object. By default the value is NULL.
17 RouteSaveDialog::RouteSaveDialog(QWidget *parent) :
18 QDialog(parent), ui(new Ui::RouteSaveDialog){
20 qDebug() << "__RouteSaveDialog";
22 this->setWindowTitle("Tracking");
27 helpRoutingDialog = NULL;
28 calibrateDialog = NULL;
38 pixmapRouteStop = new QPixmap("Graphics/route_stop.png");
39 pixmapRouteStart = new QPixmap("Graphics/route_start.png");
40 iconRouteStop = new QIcon(*pixmapRouteStop);
41 iconRouteStart = new QIcon(*pixmapRouteStart);
42 QSize iconSize(125, 125);
43 ui->buttonRouteStartStop->setIconSize(iconSize);
44 ui->buttonRouteStartStop->setIcon(*iconRouteStart);
45 ui->buttonRouteStartStop->setAutoFillBackground(true);
46 ui->buttonRouteStartStop->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)");
47 ui->pushButtonInfo->setAutoFillBackground(true);
48 ui->pushButtonInfo->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)");
50 //Satellite picture and label
51 ui->labelRouteSatelliteStatus->setVisible(0);
52 ui->labelRouteSatellitePicture->setVisible(0);
53 //ui->labelRouteSatellitePicture->setPixmap(QPixmap("Graphics/satellite_vista.png"));
54 timerSatellitePicture = new QTimer();
55 timerSatellitePicture->setInterval(400);
56 connect(timerSatellitePicture, SIGNAL(timeout()),this, SLOT(timerSatellitePictureTimeout()));
57 ui->labelUserInfo->setText("Push start button"); //User info label
59 //Invisible or clear labels
60 ui->labelRouteStatus->setVisible(0);
61 ui->labelRoutePicture->setVisible(0);
62 ui->labelGpsSpeed->setVisible(0); //GPS speed label
63 ui->labelGpsAvgSpeed->setVisible(0); //GPS average speed label
64 ui->labelDistance->setVisible(0); //GPS distance label
65 ui->labelSignalStrength->setText(""); //GPS signal strength label
68 timerRoutePicture = new QTimer();
69 timerRoutePicture->setInterval(400);
70 connect(timerRoutePicture, SIGNAL(timeout()),this, SLOT(timerRoutePictureTimeout()));
73 location = new Maemo5Location(this);
74 gpsData = new GPSData(location);
75 connect(location,SIGNAL(agnss()),this,SLOT(gpsStatus()));
79 * Destructor of this class. Deletes all dynamic objects and sets them to NULL.
81 RouteSaveDialog::~RouteSaveDialog()
83 qDebug() << "__~RouteSaveDialog";
93 delete timerSatellitePicture;
94 delete timerRoutePicture;
95 delete pixmapRouteStop;
96 delete pixmapRouteStart;
98 delete iconRouteStart;
104 void RouteSaveDialog::changeEvent(QEvent *e)
106 QDialog::changeEvent(e);
108 case QEvent::LanguageChange:
109 ui->retranslateUi(this);
117 * This slot function is called when route start/stop button clicked.
119 void RouteSaveDialog::on_buttonRouteStartStop_clicked()
121 if ( buttonStatus == true )//If start button clicked
123 qDebug() << "__start button clicked";
131 buttonStatus = false;
132 ui->buttonRouteStartStop->setIcon(*iconRouteStop);
133 location->startPollingGPS();
136 else //If stop button clicked
138 qDebug() << "__stop button clicked";
140 ui->buttonRouteStartStop->setIcon(*iconRouteStart);
142 //Satellite picture and label
143 ui->labelRouteSatelliteStatus->setText("Searching satellite");
144 ui->labelRouteSatelliteStatus->setVisible(0);
145 ui->labelRouteSatellitePicture->setVisible(0);
146 timerSatellitePicture->stop();
148 //Route picture and label
149 ui->labelRouteStatus->setVisible(0);
150 ui->labelRoutePicture->setVisible(0);
151 timerRoutePicture->stop();
152 location->stopPollingGPS();
156 calibrateDialog = new CalibrateDialog();
158 calibrateDialog->show();
159 calibrateDialog->resetProgressValue();
162 calibrateDialog->setMaxValue( points + 1 );
165 calibrateDialog->setProgressValue(iteration);
168 } while(iteration != points);*/
170 QString routeFile = QString("routetemp.xml");
171 if (routeDialog->readRouteFromFile( routeFile , calibrateDialog) == true)
174 routeDialog = new RouteDialog(this);
175 connect(routeDialog, SIGNAL(sendroute()), this, SLOT(sendRoute()));
177 calibrateDialog->close();
182 calibrateDialog->close();
185 //Set GPS speed labels in visible
186 ui->labelGpsSpeed->setVisible(0);
187 ui->labelGpsAvgSpeed->setVisible(0);
190 ui->labelDistance->setVisible(0);
192 //Stop route recording
193 gpsData->stopRouteRecording();
196 ui->labelUserInfo->setText("Push start button");
201 * This slot function is called when satellite picture timer timeout(400ms).
203 void RouteSaveDialog::timerSatellitePictureTimeout()
205 //If satellite picture visible.
206 if (ui->labelRouteSatellitePicture->isVisible() == 1)
208 ui->labelRouteSatelliteStatus->setVisible(0);
209 ui->labelRouteSatellitePicture->setVisible(0);
213 ui->labelRouteSatelliteStatus->setVisible(1);
214 ui->labelRouteSatellitePicture->setVisible(1);
216 timerSatellitePicture->start();
220 * This slot function is called when route picture timer timeout(400ms).
222 void RouteSaveDialog::timerRoutePictureTimeout()
224 //If route picture visible.
225 if (ui->labelRoutePicture->isVisible() == 1)
227 ui->labelRouteStatus->setVisible(0);
228 ui->labelRoutePicture->setVisible(0);
232 ui->labelRouteStatus->setVisible(1);
233 ui->labelRoutePicture->setVisible(1);
235 timerRoutePicture->start();
239 * This slot function is called when GPS update location.
241 void RouteSaveDialog::gpsStatus()
243 //IF GPS start button clicked
244 if (buttonStatus == false)
246 //ui->labelSignalStrength->setText(QString::number(location->getSignalStrength())); //Returns average signal strength of satellites which are in use.
248 //If GPS find 4 or more satellite and signal stregth is 30 or more.
249 if (location->getSatellitesInUse() >= 4 && location->getSignalStrength() >= 30)
251 //Satellite picture and label
252 ui->labelRouteSatelliteStatus->setText("GPS Ready");
253 ui->labelRouteSatelliteStatus->setVisible(1);
254 ui->labelRouteSatellitePicture->setVisible(1);
255 timerSatellitePicture->stop();
257 //Route picture and label
258 ui->labelRouteStatus->setText("Recorded " + QString::number(gpsData->roundCounter) + " route point");
259 ui->labelUserInfo->setText("Recorded " + QString::number(gpsData->roundCounter) + " route point");
260 ui->labelRouteStatus->setVisible(1);
261 ui->labelRoutePicture->setVisible(1);
262 timerRoutePicture->start();
265 speed = location->getSpeed();
268 gpsSpeed.sprintf("%.0f", speed);
269 ui->labelGpsSpeed->setText(gpsSpeed + " km/h");
270 ui->labelGpsSpeed->setVisible(1);
272 //Set GPS average speed
274 averageSpeed = allSpeeds/speedCount;
275 gpsSpeed.sprintf("%.0f",averageSpeed);
276 ui->labelGpsAvgSpeed->setText("Average: " + gpsSpeed + " km/h");
277 ui->labelGpsAvgSpeed->setVisible(1);
280 //Set distance traveled.
281 distanceString.sprintf("%.3f", gpsData->getDistanceTraveled());
282 ui->labelDistance->setText(distanceString + " km");
283 ui->labelDistance->setVisible(1);
285 //Start route recording
286 gpsData->startRouteRecording();
288 else //If GPS find less than 4 satellite or signal strength is poor.
290 //Satellite picture and label
291 ui->labelRouteSatelliteStatus->setText("Searching satellite");
292 ui->labelUserInfo->setText("Searching satellite");
293 ui->labelRouteSatelliteStatus->setVisible(1);
294 ui->labelRouteSatellitePicture->setVisible(1);
295 timerSatellitePicture->start();
297 //Route picture and label
298 ui->labelRouteStatus->setVisible(0);
299 ui->labelRoutePicture->setVisible(0);
300 timerRoutePicture->stop();
302 //Set GPS speed labels in visible
303 ui->labelGpsSpeed->setVisible(0);
304 ui->labelGpsAvgSpeed->setVisible(0);
307 ui->labelDistance->setVisible(0);
310 else //If stop button clicked
312 //Satellite picture and label
313 ui->labelRouteSatelliteStatus->setText("Searching satellite");
314 ui->labelUserInfo->setText("Push start button");
315 ui->labelRouteSatelliteStatus->setVisible(0);
316 ui->labelRouteSatellitePicture->setVisible(0);
317 timerSatellitePicture->stop();
319 //Route picture and label
320 ui->labelRouteStatus->setVisible(0);
321 ui->labelRoutePicture->setVisible(0);
322 timerRoutePicture->stop();
324 //Set GPS speed labels in visible
325 ui->labelGpsSpeed->setVisible(0);
326 ui->labelGpsAvgSpeed->setVisible(0);
329 ui->labelDistance->setVisible(0);
334 * This slot function is called when routeDialog emit sendroute (sendPushButton).
336 void RouteSaveDialog::sendRoute()
338 emit sendroute(); //Emit mainwindow clientSendRoute
342 * This slot function called when ever info button clicked.
344 void RouteSaveDialog::on_pushButtonInfo_clicked()
346 if(!helpRoutingDialog)
348 helpRoutingDialog = new HelpRoutingDialog;
350 connect(helpRoutingDialog, SIGNAL(rejected()), this, SLOT(killHelpDialog()));
351 helpRoutingDialog->show();
355 * This slot function called when ever dialog rejected.
357 void RouteSaveDialog::killHelpDialog()
359 if(helpRoutingDialog)
361 qDebug() << "__Route save kill: helpRoutingDialog";
362 delete helpRoutingDialog;
363 helpRoutingDialog = NULL;
368 * This function return speed average.
369 * @return double average speed
371 double RouteSaveDialog::getAverageSpeed()
377 * This function return distance traveled in QString.
378 * @return QString distance traveled
380 QString RouteSaveDialog::getDistanceTraveled()
382 return distanceString;