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