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->labelSignalStrength->setText(""); //GPS signal strength label
64 timerRoutePicture = new QTimer();
65 timerRoutePicture->setInterval(400);
66 connect(timerRoutePicture, SIGNAL(timeout()),this, SLOT(timerRoutePictureTimeout()));
69 location = new Maemo5Location(this);
70 gpsData = new GPSData(location);
71 connect(location,SIGNAL(agnss()),this,SLOT(gpsStatus()));
75 *Destructor of this class. Deletes all dynamic objects and sets them to NULL.
77 RouteSaveDialog::~RouteSaveDialog()
79 qDebug() << "__~RouteSaveDialog";
89 delete timerSatellitePicture;
90 delete timerRoutePicture;
91 delete pixmapRouteStop;
92 delete pixmapRouteStart;
94 delete iconRouteStart;
100 void RouteSaveDialog::changeEvent(QEvent *e)
102 QDialog::changeEvent(e);
104 case QEvent::LanguageChange:
105 ui->retranslateUi(this);
113 *This slot function is called when route start/stop button clicked.
115 void RouteSaveDialog::on_buttonRouteStartStop_clicked()
117 if ( buttonStatus == true )//If start button clicked
119 qDebug() << "__start button clicked";
127 buttonStatus = false;
128 ui->buttonRouteStartStop->setIcon(*iconRouteStop);
129 location->startPollingGPS();
132 else //If stop button clicked
134 qDebug() << "__stop button clicked";
136 ui->buttonRouteStartStop->setIcon(*iconRouteStart);
138 //Satellite picture and label
139 ui->labelRouteSatelliteStatus->setText("Searching satellite");
140 ui->labelRouteSatelliteStatus->setVisible(0);
141 ui->labelRouteSatellitePicture->setVisible(0);
142 timerSatellitePicture->stop();
144 //Route picture and label
145 ui->labelRouteStatus->setVisible(0);
146 ui->labelRoutePicture->setVisible(0);
147 timerRoutePicture->stop();
148 location->stopPollingGPS();
150 QString routeFile = QString("routetemp.xml");
151 if (routeDialog->readRouteFromFile( routeFile ) == true)
154 routeDialog = new RouteDialog(this);
155 connect(routeDialog, SIGNAL(sendroute()), this, SLOT(sendRoute()));
159 //Set GPS speed labels in visible
160 ui->labelGpsSpeed->setVisible(0);
161 ui->labelGpsAvgSpeed->setVisible(0);
163 //Stop route recording
164 gpsData->stopRouteRecording();
167 ui->labelUserInfo->setText("Push start button");
172 *This slot function is called when satellite picture timer timeout(400ms).
174 void RouteSaveDialog::timerSatellitePictureTimeout()
176 //If satellite picture visible.
177 if (ui->labelRouteSatellitePicture->isVisible() == 1)
179 ui->labelRouteSatelliteStatus->setVisible(0);
180 ui->labelRouteSatellitePicture->setVisible(0);
184 ui->labelRouteSatelliteStatus->setVisible(1);
185 ui->labelRouteSatellitePicture->setVisible(1);
187 timerSatellitePicture->start();
191 *This slot function is called when route picture timer timeout(400ms).
193 void RouteSaveDialog::timerRoutePictureTimeout()
195 //If route picture visible.
196 if (ui->labelRoutePicture->isVisible() == 1)
198 ui->labelRouteStatus->setVisible(0);
199 ui->labelRoutePicture->setVisible(0);
203 ui->labelRouteStatus->setVisible(1);
204 ui->labelRoutePicture->setVisible(1);
206 timerRoutePicture->start();
210 * This slot function is called when GPS update location.
212 void RouteSaveDialog::gpsStatus()
214 //IF GPS start button clicked
215 if (buttonStatus == false)
217 //ui->labelSignalStrength->setText(QString::number(location->getSignalStrength())); //Returns average signal strength of satellites which are in use.
219 //If GPS find 4 or more satellite and signal stregth is 30 or more.
220 if (location->getSatellitesInUse() >= 4 && location->getSignalStrength() >= 30)
222 //Satellite picture and label
223 ui->labelRouteSatelliteStatus->setText("GPS Ready");
224 ui->labelRouteSatelliteStatus->setVisible(1);
225 ui->labelRouteSatellitePicture->setVisible(1);
226 timerSatellitePicture->stop();
228 //Route picture and label
229 ui->labelRouteStatus->setText("Recorded " + QString::number(gpsData->roundCounter) + " route point");
230 ui->labelUserInfo->setText("Recorded " + QString::number(gpsData->roundCounter) + " route point");
231 ui->labelRouteStatus->setVisible(1);
232 ui->labelRoutePicture->setVisible(1);
233 timerRoutePicture->start();
236 speed = location->getSpeed();
239 gpsSpeed.sprintf("%.0f", speed);
240 ui->labelGpsSpeed->setText(gpsSpeed + " km/h");
241 ui->labelGpsSpeed->setVisible(1);
243 //Set GPS average speed
245 averageSpeed = allSpeeds/speedCount;
246 gpsSpeed.sprintf("%.0f",averageSpeed);
247 ui->labelGpsAvgSpeed->setText("Average: " + gpsSpeed + " km/h");
248 ui->labelGpsAvgSpeed->setVisible(1);
251 //Start route recording
252 gpsData->startRouteRecording();
254 else //If GPS find less than 4 satellite or signal strength is poor.
256 //Satellite picture and label
257 ui->labelRouteSatelliteStatus->setText("Searching satellite");
258 ui->labelUserInfo->setText("Searching satellite");
259 ui->labelRouteSatelliteStatus->setVisible(1);
260 ui->labelRouteSatellitePicture->setVisible(1);
261 timerSatellitePicture->start();
263 //Route picture and label
264 ui->labelRouteStatus->setVisible(0);
265 ui->labelRoutePicture->setVisible(0);
266 timerRoutePicture->stop();
268 //Set GPS speed labels in visible
269 ui->labelGpsSpeed->setVisible(0);
270 ui->labelGpsAvgSpeed->setVisible(0);
273 else //If stop button clicked
275 //Satellite picture and label
276 ui->labelRouteSatelliteStatus->setText("Searching satellite");
277 ui->labelUserInfo->setText("Push start button");
278 ui->labelRouteSatelliteStatus->setVisible(0);
279 ui->labelRouteSatellitePicture->setVisible(0);
280 timerSatellitePicture->stop();
282 //Route picture and label
283 ui->labelRouteStatus->setVisible(0);
284 ui->labelRoutePicture->setVisible(0);
285 timerRoutePicture->stop();
287 //Set GPS speed labels in visible
288 ui->labelGpsSpeed->setVisible(0);
289 ui->labelGpsAvgSpeed->setVisible(0);
294 * This slot function is called when routeDialog emit sendroute (sendPushButton).
296 void RouteSaveDialog::sendRoute()
298 emit sendroute(); //Emit mainwindow clientSendRoute
302 * This slot function called when ever info button clicked.
304 void RouteSaveDialog::on_pushButtonInfo_clicked()
306 if(!helpRoutingDialog)
308 helpRoutingDialog = new HelpRoutingDialog;
310 connect(helpRoutingDialog, SIGNAL(rejected()), this, SLOT(killHelpDialog()));
311 helpRoutingDialog->show();
315 * This slot function called when ever dialog rejected.
317 void RouteSaveDialog::killHelpDialog()
319 if(helpRoutingDialog)
321 qDebug() << "__Route save kill: helpRoutingDialog";
322 delete helpRoutingDialog;
323 helpRoutingDialog = NULL;
328 * This function return speed average.
329 * @return double average speed
331 double RouteSaveDialog::getAverageSpeed()