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