Conflict
[speedfreak] / Client / routesavedialog.cpp
1 /*
2  * Route save dialog class
3  *
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
7  */
8
9 #include "routesavedialog.h"
10 #include "ui_routesavedialog.h"
11
12 /**
13   *Constructor of this class.
14   *@param QWidget pointer to parent object. By default the value is NULL.
15   */
16 RouteSaveDialog::RouteSaveDialog(QWidget *parent) :
17     QDialog(parent), ui(new Ui::RouteSaveDialog){
18
19     ui->setupUi(this);
20     this->setWindowTitle("Tracking");
21
22     routeDialog = NULL;
23
24     //Button settings
25     buttonStatus = true;
26     pixmapRouteStop = new QPixmap("Graphics/route_stop.png");
27     pixmapRouteStart = new QPixmap("Graphics/route_start.png");
28     iconRouteStop = new QIcon(*pixmapRouteStop);
29     iconRouteStart = new QIcon(*pixmapRouteStart);
30     QSize iconSize(125, 125);
31     ui->buttonRouteStartStop->setIconSize(iconSize);
32     ui->buttonRouteStartStop->setIcon(*iconRouteStart);
33     ui->buttonRouteStartStop->setAutoFillBackground(true);
34     ui->buttonRouteStartStop->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)");
35
36     //Satellite picture and label
37     ui->labelRouteSatelliteStatus->setVisible(0);
38     ui->labelRouteSatellitePicture->setVisible(0);
39     //ui->labelRouteSatellitePicture->setPixmap(QPixmap("Graphics/satellite_vista.png"));
40     timerSatellitePicture = new QTimer();
41     timerSatellitePicture->setInterval(400);
42     connect(timerSatellitePicture, SIGNAL(timeout()),this, SLOT(timerSatellitePictureTimeout()));
43
44     //Route picture and label
45     ui->labelRouteStatus->setVisible(0);
46     ui->labelRoutePicture->setVisible(0);
47     timerRoutePicture = new QTimer();
48     timerRoutePicture->setInterval(400);
49     connect(timerRoutePicture, SIGNAL(timeout()),this, SLOT(timerRoutePictureTimeout()));
50
51     //GPS speed label
52     ui->labelGpsSpeed->setVisible(0);
53
54     //GPS
55     location = new Maemo5Location(this);
56     gpsData = new GPSData(location);
57     connect(location,SIGNAL(agnss()),this,SLOT(gpsStatus()));
58 }
59
60 /**
61   *Destructor of this class. Deletes all dynamic objects and sets them to NULL.
62   */
63 RouteSaveDialog::~RouteSaveDialog()
64 {
65     delete ui;
66     delete timerSatellitePicture;
67     delete timerRoutePicture;
68     delete location;
69     delete gpsData;
70     delete routeDialog;
71     delete pixmapRouteStop;
72     delete pixmapRouteStart;
73     delete iconRouteStop;
74     delete iconRouteStart;
75 }
76
77 /**
78   *
79   */
80 void RouteSaveDialog::changeEvent(QEvent *e)
81 {
82     QDialog::changeEvent(e);
83     switch (e->type()) {
84     case QEvent::LanguageChange:
85         ui->retranslateUi(this);
86         break;
87     default:
88         break;
89     }
90 }
91
92 /**
93   *This slot function is called when route start/stop button clicked.
94   */
95 void RouteSaveDialog::on_buttonRouteStartStop_clicked()
96 {
97     //If start button clicked
98     if ( buttonStatus == true )
99     {
100         buttonStatus = false;
101         ui->buttonRouteStartStop->setIcon(*iconRouteStop);
102         location->startPollingGPS();
103         gpsStatus();
104     }
105     else
106     {
107         buttonStatus = true;
108         ui->buttonRouteStartStop->setIcon(*iconRouteStart);
109
110         //Satellite picture and label
111         ui->labelRouteSatelliteStatus->setText("Searching satellite");
112         ui->labelRouteSatelliteStatus->setVisible(0);
113         ui->labelRouteSatellitePicture->setVisible(0);
114         timerSatellitePicture->stop();
115
116         //Route picture and label
117         ui->labelRouteStatus->setVisible(0);
118         ui->labelRoutePicture->setVisible(0);
119         timerRoutePicture->stop();
120         location->stopPollingGPS();
121
122         QString routeFile = QString("routetemp.xml");
123         if (routeDialog->readRouteFromFile( routeFile ) == true)
124         {
125             if(!routeDialog)
126                 routeDialog = new RouteDialog;
127             connect(routeDialog, SIGNAL(sendroute()), this, SLOT(sendRoute()));
128             routeDialog->show();
129         }
130
131         //GPS speed label
132         ui->labelGpsSpeed->setVisible(0);
133
134         //Stop route recording
135         gpsData->stopRouteRecording();
136     }
137 }
138
139 /**
140   *This slot function is called when satellite picture timer timeout(400ms).
141   */
142 void RouteSaveDialog::timerSatellitePictureTimeout()
143 {
144     //If satellite picture visible.
145     if (ui->labelRouteSatellitePicture->isVisible() == 1)
146     {
147         ui->labelRouteSatelliteStatus->setVisible(0);
148         ui->labelRouteSatellitePicture->setVisible(0);
149     }
150     else
151     {
152         ui->labelRouteSatelliteStatus->setVisible(1);
153         ui->labelRouteSatellitePicture->setVisible(1);
154     }
155     timerSatellitePicture->start();
156 }
157
158 /**
159   *This slot function is called when route picture timer timeout(400ms).
160   */
161 void RouteSaveDialog::timerRoutePictureTimeout()
162 {
163     //If route picture visible.
164     if (ui->labelRoutePicture->isVisible() == 1)
165     {
166         ui->labelRouteStatus->setVisible(0);
167         ui->labelRoutePicture->setVisible(0);
168     }
169     else
170     {
171         ui->labelRouteStatus->setVisible(1);
172         ui->labelRoutePicture->setVisible(1);
173     }
174     timerRoutePicture->start();
175 }
176
177 /**
178   *
179   */
180 void RouteSaveDialog::gpsStatus()
181 {
182     //IF GPS start button clicked
183     if (buttonStatus == false)
184     {
185         //If GPS find 4 satellite.
186         if (location->getSatellitesInUse() >= 4)
187         {
188             //Satellite picture and label
189             ui->labelRouteSatelliteStatus->setText("GPS Ready");
190             ui->labelRouteSatelliteStatus->setVisible(1);
191             ui->labelRouteSatellitePicture->setVisible(1);
192             timerSatellitePicture->stop();
193
194             //Route picture and label
195             ui->labelRouteStatus->setText("Recorded " + QString::number(gpsData->roundCounter) + " route point");
196             ui->labelRouteStatus->setVisible(1);
197             ui->labelRoutePicture->setVisible(1);
198             timerRoutePicture->start();
199
200             //Set GPS speed.
201             gpsSpeed.sprintf("%.0f",location->getSpeed());
202             ui->labelGpsSpeed->setText(gpsSpeed + " km/h");
203             ui->labelGpsSpeed->setVisible(1);
204
205             //Start route recording
206             gpsData->startRouteRecording();
207         }
208
209         //If GPS find less than 4 satellite.
210         else
211         {
212             //Satellite picture and label
213             ui->labelRouteSatelliteStatus->setText("Searching satellite");
214             ui->labelRouteSatelliteStatus->setVisible(1);
215             ui->labelRouteSatellitePicture->setVisible(1);
216             timerSatellitePicture->start();
217
218             //Route picture and label
219             ui->labelRouteStatus->setVisible(0);
220             ui->labelRoutePicture->setVisible(0);
221             timerRoutePicture->stop();
222
223             //GPS speed label
224             ui->labelGpsSpeed->setVisible(0);
225         }
226     }
227     else
228     {
229         //Satellite picture and label
230         ui->labelRouteSatelliteStatus->setText("Searching satellite");
231         ui->labelRouteSatelliteStatus->setVisible(0);
232         ui->labelRouteSatellitePicture->setVisible(0);
233         timerSatellitePicture->stop();
234
235         //Route picture and label
236         ui->labelRouteStatus->setVisible(0);
237         ui->labelRoutePicture->setVisible(0);
238         timerRoutePicture->stop();
239
240         //GPS speed label
241         ui->labelGpsSpeed->setVisible(0);
242     }
243 }
244
245 /**
246   * This slot function is called when routeDialog emit sendroute (sendPushButton).
247   */
248 void RouteSaveDialog::sendRoute()
249 {
250     emit sendroute(); //Emit mainwindow clientSendRoute
251 }