Route save dialog development. Added: gps,icon...
[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),
18     ui(new Ui::RouteSaveDialog)
19 {
20     ui->setupUi(this);
21
22     routeDialog = new RouteDialog;
23
24     //Button settings
25     buttonStatus = true;
26     pixmapRouteStop = new QPixmap("Graphics/route_stop.png");
27     pixmapRoutePlay = new QPixmap("Graphics/route_play.png");
28     iconRouteStop = new QIcon(*pixmapRouteStop);
29     iconRoutePlay = new QIcon(*pixmapRoutePlay);
30     QSize iconSize(125, 125);
31     ui->buttonRouteStartStop->setIconSize(iconSize);
32     ui->buttonRouteStartStop->setIcon(*iconRoutePlay);
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 pixmapRoutePlay;
73     delete iconRouteStop;
74     delete iconRoutePlay;
75 }
76
77 void RouteSaveDialog::changeEvent(QEvent *e)
78 {
79     QDialog::changeEvent(e);
80     switch (e->type()) {
81     case QEvent::LanguageChange:
82         ui->retranslateUi(this);
83         break;
84     default:
85         break;
86     }
87 }
88
89 /**
90   *This slot function is called when route start/stop button clicked.
91   */
92 void RouteSaveDialog::on_buttonRouteStartStop_clicked()
93 {
94     //If start button clicked
95     if ( buttonStatus == true )
96     {
97         buttonStatus = false;
98         ui->buttonRouteStartStop->setIcon(*iconRouteStop);
99         location->startPollingGPS();
100         gpsStatus();
101     }
102     else
103     {
104         buttonStatus = true;
105         ui->buttonRouteStartStop->setIcon(*iconRoutePlay);
106
107         //Satellite picture and label
108         ui->labelRouteSatelliteStatus->setText("Searching satellite");
109         ui->labelRouteSatelliteStatus->setVisible(0);
110         ui->labelRouteSatellitePicture->setVisible(0);
111         timerSatellitePicture->stop();
112
113         //Route picture and label
114         ui->labelRouteStatus->setVisible(0);
115         ui->labelRoutePicture->setVisible(0);
116         timerRoutePicture->stop();
117         location->stopPollingGPS();
118         routeDialog->show();
119
120         //GPS speed label
121         ui->labelGpsSpeed->setVisible(0);
122
123         //Stop route recording
124         gpsData->stopRouteRecording();
125     }
126 }
127
128 /**
129   *This slot function is called when satellite picture timer timeout(400ms).
130   */
131 void RouteSaveDialog::timerSatellitePictureTimeout()
132 {
133     //If satellite picture visible.
134     if (ui->labelRouteSatellitePicture->isVisible() == 1)
135     {
136         ui->labelRouteSatelliteStatus->setVisible(0);
137         ui->labelRouteSatellitePicture->setVisible(0);
138     }
139     else
140     {
141         ui->labelRouteSatelliteStatus->setVisible(1);
142         ui->labelRouteSatellitePicture->setVisible(1);
143     }
144     timerSatellitePicture->start();
145 }
146
147 /**
148   *This slot function is called when route picture timer timeout(400ms).
149   */
150 void RouteSaveDialog::timerRoutePictureTimeout()
151 {
152     //If route picture visible.
153     if (ui->labelRoutePicture->isVisible() == 1)
154     {
155         ui->labelRouteStatus->setVisible(0);
156         ui->labelRoutePicture->setVisible(0);
157     }
158     else
159     {
160         ui->labelRouteStatus->setVisible(1);
161         ui->labelRoutePicture->setVisible(1);
162     }
163     timerRoutePicture->start();
164 }
165
166 void RouteSaveDialog::gpsStatus()
167 {
168     //IF GPS start button clicked
169     if (buttonStatus == false)
170     {
171         //If GPS find 4 satellite.
172         if (location->getSatellitesInUse() >= 4)
173         {
174             //Satellite picture and label
175             ui->labelRouteSatelliteStatus->setText("GPS Ready");
176             ui->labelRouteSatelliteStatus->setVisible(1);
177             ui->labelRouteSatellitePicture->setVisible(1);
178             timerSatellitePicture->stop();
179
180             //Route picture and label
181             ui->labelRouteStatus->setText("Recorded " + QString::number(gpsData->roundCounter) + " route point");
182             ui->labelRouteStatus->setVisible(1);
183             ui->labelRoutePicture->setVisible(1);
184             timerRoutePicture->start();
185
186             //Set GPS speed.
187             gpsSpeed.sprintf("%.0f",location->getSpeed());
188             ui->labelGpsSpeed->setText(gpsSpeed + " km/h");
189             ui->labelGpsSpeed->setVisible(1);
190
191             //Start route recording
192             gpsData->startRouteRecording();
193         }
194
195         //If GPS find less than 4 satellite.
196         else
197         {
198             //Satellite picture and label
199             ui->labelRouteSatelliteStatus->setText("Searching satellite");
200             ui->labelRouteSatelliteStatus->setVisible(1);
201             ui->labelRouteSatellitePicture->setVisible(1);
202             timerSatellitePicture->start();
203
204             //Route picture and label
205             ui->labelRouteStatus->setVisible(0);
206             ui->labelRoutePicture->setVisible(0);
207             timerRoutePicture->stop();
208
209             //GPS speed label
210             ui->labelGpsSpeed->setVisible(0);
211         }
212     }
213     else
214     {
215         //Satellite picture and label
216         ui->labelRouteSatelliteStatus->setText("Searching satellite");
217         ui->labelRouteSatelliteStatus->setVisible(0);
218         ui->labelRouteSatellitePicture->setVisible(0);
219         timerSatellitePicture->stop();
220
221         //Route picture and label
222         ui->labelRouteStatus->setVisible(0);
223         ui->labelRoutePicture->setVisible(0);
224         timerRoutePicture->stop();
225
226         //GPS speed label
227         ui->labelGpsSpeed->setVisible(0);
228     }
229 }