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;
37 pixmapRouteStop = new QPixmap("Graphics/route_stop.png");
38 pixmapRouteStart = new QPixmap("Graphics/route_start.png");
39 iconRouteStop = new QIcon(*pixmapRouteStop);
40 iconRouteStart = new QIcon(*pixmapRouteStart);
41 QSize iconSize(125, 125);
42 ui->buttonRouteStartStop->setIconSize(iconSize);
43 ui->buttonRouteStartStop->setIcon(*iconRouteStart);
44 ui->buttonRouteStartStop->setAutoFillBackground(true);
45 ui->buttonRouteStartStop->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)");
46 ui->pushButtonInfo->setAutoFillBackground(true);
47 ui->pushButtonInfo->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)");
49 //Satellite picture and label
50 ui->labelRouteSatelliteStatus->setVisible(0);
51 ui->labelRouteSatellitePicture->setVisible(0);
52 //ui->labelRouteSatellitePicture->setPixmap(QPixmap("Graphics/satellite_vista.png"));
53 timerSatellitePicture = new QTimer();
54 timerSatellitePicture->setInterval(400);
55 connect(timerSatellitePicture, SIGNAL(timeout()),this, SLOT(timerSatellitePictureTimeout()));
56 ui->labelUserInfo->setText("Push start button"); //User info label
58 //Invisible or clear labels
59 ui->labelRouteStatus->setVisible(0);
60 ui->labelRoutePicture->setVisible(0);
61 ui->labelGpsSpeed->setVisible(0); //GPS speed label
62 ui->labelGpsAvgSpeed->setVisible(0); //GPS average speed label
63 ui->labelDistance->setVisible(0); //GPS distance label
64 ui->labelSignalStrength->setText(""); //GPS signal strength label
65 timerRoutePicture = new QTimer();
66 timerRoutePicture->setInterval(400);
67 connect(timerRoutePicture, SIGNAL(timeout()),this, SLOT(timerRoutePictureTimeout()));
70 location = new Maemo5Location(this);
71 gpsData = new GPSData(location);
72 connect(location,SIGNAL(agnss()),this,SLOT(gpsStatus()));
76 *Destructor of this class. Deletes all dynamic objects and sets them to NULL.
78 RouteSaveDialog::~RouteSaveDialog()
80 qDebug() << "__~RouteSaveDialog";
90 delete timerSatellitePicture;
91 delete timerRoutePicture;
92 delete pixmapRouteStop;
93 delete pixmapRouteStart;
95 delete iconRouteStart;
101 void RouteSaveDialog::changeEvent(QEvent *e)
103 QDialog::changeEvent(e);
105 case QEvent::LanguageChange:
106 ui->retranslateUi(this);
114 *This slot function is called when route start/stop button clicked.
116 void RouteSaveDialog::on_buttonRouteStartStop_clicked()
118 if ( buttonStatus == true )//If start button clicked
120 qDebug() << "__start button clicked";
128 buttonStatus = false;
129 ui->buttonRouteStartStop->setIcon(*iconRouteStop);
130 location->startPollingGPS();
133 else //If stop button clicked
135 qDebug() << "__stop button clicked";
137 ui->buttonRouteStartStop->setIcon(*iconRouteStart);
139 //Satellite picture and label
140 ui->labelRouteSatelliteStatus->setText("Searching satellite");
141 ui->labelRouteSatelliteStatus->setVisible(0);
142 ui->labelRouteSatellitePicture->setVisible(0);
143 timerSatellitePicture->stop();
145 //Route picture and label
146 ui->labelRouteStatus->setVisible(0);
147 ui->labelRoutePicture->setVisible(0);
148 timerRoutePicture->stop();
149 location->stopPollingGPS();
151 QString routeFile = QString("routetemp.xml");
152 if (routeDialog->readRouteFromFile( routeFile ) == true)
155 routeDialog = new RouteDialog(this);
156 connect(routeDialog, SIGNAL(sendroute()), this, SLOT(sendRoute()));
160 //Set GPS speed labels in visible
161 ui->labelGpsSpeed->setVisible(0);
162 ui->labelGpsAvgSpeed->setVisible(0);
165 ui->labelDistance->setVisible(0);
167 //Stop route recording
168 gpsData->stopRouteRecording();
171 ui->labelUserInfo->setText("Push start button");
176 *This slot function is called when satellite picture timer timeout(400ms).
178 void RouteSaveDialog::timerSatellitePictureTimeout()
180 //If satellite picture visible.
181 if (ui->labelRouteSatellitePicture->isVisible() == 1)
183 ui->labelRouteSatelliteStatus->setVisible(0);
184 ui->labelRouteSatellitePicture->setVisible(0);
188 ui->labelRouteSatelliteStatus->setVisible(1);
189 ui->labelRouteSatellitePicture->setVisible(1);
191 timerSatellitePicture->start();
195 *This slot function is called when route picture timer timeout(400ms).
197 void RouteSaveDialog::timerRoutePictureTimeout()
199 //If route picture visible.
200 if (ui->labelRoutePicture->isVisible() == 1)
202 ui->labelRouteStatus->setVisible(0);
203 ui->labelRoutePicture->setVisible(0);
207 ui->labelRouteStatus->setVisible(1);
208 ui->labelRoutePicture->setVisible(1);
210 timerRoutePicture->start();
214 * This slot function is called when GPS update location.
216 void RouteSaveDialog::gpsStatus()
218 //IF GPS start button clicked
219 if (buttonStatus == false)
221 //ui->labelSignalStrength->setText(QString::number(location->getSignalStrength())); //Returns average signal strength of satellites which are in use.
223 //If GPS find 4 or more satellite and signal stregth is 30 or more.
224 if (location->getSatellitesInUse() >= 4 && location->getSignalStrength() >= 30)
226 //Satellite picture and label
227 ui->labelRouteSatelliteStatus->setText("GPS Ready");
228 ui->labelRouteSatelliteStatus->setVisible(1);
229 ui->labelRouteSatellitePicture->setVisible(1);
230 timerSatellitePicture->stop();
232 //Route picture and label
233 ui->labelRouteStatus->setText("Recorded " + QString::number(gpsData->roundCounter) + " route point");
234 ui->labelUserInfo->setText("Recorded " + QString::number(gpsData->roundCounter) + " route point");
235 ui->labelRouteStatus->setVisible(1);
236 ui->labelRoutePicture->setVisible(1);
237 timerRoutePicture->start();
240 speed = location->getSpeed();
243 gpsSpeed.sprintf("%.0f", speed);
244 ui->labelGpsSpeed->setText(gpsSpeed + " km/h");
245 ui->labelGpsSpeed->setVisible(1);
247 //Set GPS average speed
249 averageSpeed = allSpeeds/speedCount;
250 gpsSpeed.sprintf("%.0f",averageSpeed);
251 ui->labelGpsAvgSpeed->setText("Average: " + gpsSpeed + " km/h");
252 ui->labelGpsAvgSpeed->setVisible(1);
255 //Set distance traveled.
256 distanceString.sprintf("%.3f", gpsData->getDistanceTraveled());
257 ui->labelDistance->setText(distanceString + " km");
258 ui->labelDistance->setVisible(1);
260 //Start route recording
261 gpsData->startRouteRecording();
263 else //If GPS find less than 4 satellite or signal strength is poor.
265 //Satellite picture and label
266 ui->labelRouteSatelliteStatus->setText("Searching satellite");
267 ui->labelUserInfo->setText("Searching satellite");
268 ui->labelRouteSatelliteStatus->setVisible(1);
269 ui->labelRouteSatellitePicture->setVisible(1);
270 timerSatellitePicture->start();
272 //Route picture and label
273 ui->labelRouteStatus->setVisible(0);
274 ui->labelRoutePicture->setVisible(0);
275 timerRoutePicture->stop();
277 //Set GPS speed labels in visible
278 ui->labelGpsSpeed->setVisible(0);
279 ui->labelGpsAvgSpeed->setVisible(0);
282 ui->labelDistance->setVisible(0);
285 else //If stop button clicked
287 //Satellite picture and label
288 ui->labelRouteSatelliteStatus->setText("Searching satellite");
289 ui->labelUserInfo->setText("Push start button");
290 ui->labelRouteSatelliteStatus->setVisible(0);
291 ui->labelRouteSatellitePicture->setVisible(0);
292 timerSatellitePicture->stop();
294 //Route picture and label
295 ui->labelRouteStatus->setVisible(0);
296 ui->labelRoutePicture->setVisible(0);
297 timerRoutePicture->stop();
299 //Set GPS speed labels in visible
300 ui->labelGpsSpeed->setVisible(0);
301 ui->labelGpsAvgSpeed->setVisible(0);
304 ui->labelDistance->setVisible(0);
309 * This slot function is called when routeDialog emit sendroute (sendPushButton).
311 void RouteSaveDialog::sendRoute()
313 emit sendroute(); //Emit mainwindow clientSendRoute
317 * This slot function called when ever info button clicked.
319 void RouteSaveDialog::on_pushButtonInfo_clicked()
321 if(!helpRoutingDialog)
323 helpRoutingDialog = new HelpRoutingDialog;
325 connect(helpRoutingDialog, SIGNAL(rejected()), this, SLOT(killHelpDialog()));
326 helpRoutingDialog->show();
330 * This slot function called when ever dialog rejected.
332 void RouteSaveDialog::killHelpDialog()
334 if(helpRoutingDialog)
336 qDebug() << "__Route save kill: helpRoutingDialog";
337 delete helpRoutingDialog;
338 helpRoutingDialog = NULL;
343 * This function return speed average.
344 * @return double average speed
346 double RouteSaveDialog::getAverageSpeed()
352 * This function return distance traveled in QString.
353 * @return QString distance traveled
355 QString RouteSaveDialog::getDistanceTraveled()
357 return distanceString;