Settings dialog changed. Log in/Log out functionality improved.
[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     //User info label
55     ui->labelUserInfo->setText("");
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     delete ui;
69     delete timerSatellitePicture;
70     delete timerRoutePicture;
71     delete location;
72     delete gpsData;
73     delete routeDialog;
74     delete pixmapRouteStop;
75     delete pixmapRouteStart;
76     delete iconRouteStop;
77     delete iconRouteStart;
78 }
79
80 /**
81   *
82   */
83 void RouteSaveDialog::changeEvent(QEvent *e)
84 {
85     QDialog::changeEvent(e);
86     switch (e->type()) {
87     case QEvent::LanguageChange:
88         ui->retranslateUi(this);
89         break;
90     default:
91         break;
92     }
93 }
94
95 /**
96   *This slot function is called when route start/stop button clicked.
97   */
98 void RouteSaveDialog::on_buttonRouteStartStop_clicked()
99 {
100     //If start button clicked
101     if ( buttonStatus == true )
102     {
103         buttonStatus = false;
104         ui->buttonRouteStartStop->setIcon(*iconRouteStop);
105         location->startPollingGPS();
106         gpsStatus();
107     }
108     else
109     {
110         buttonStatus = true;
111         ui->buttonRouteStartStop->setIcon(*iconRouteStart);
112
113         //Satellite picture and label
114         ui->labelRouteSatelliteStatus->setText("Searching satellite");
115         ui->labelRouteSatelliteStatus->setVisible(0);
116         ui->labelRouteSatellitePicture->setVisible(0);
117         timerSatellitePicture->stop();
118
119         //Route picture and label
120         ui->labelRouteStatus->setVisible(0);
121         ui->labelRoutePicture->setVisible(0);
122         timerRoutePicture->stop();
123         location->stopPollingGPS();
124
125         QString routeFile = QString("routetemp.xml");
126         if (routeDialog->readRouteFromFile( routeFile ) == true)
127         {
128             if(!routeDialog)
129                 routeDialog = new RouteDialog;
130             connect(routeDialog, SIGNAL(sendroute()), this, SLOT(sendRoute()));
131             routeDialog->show();
132         }
133
134         //GPS speed label
135         ui->labelGpsSpeed->setVisible(0);
136
137         //Stop route recording
138         gpsData->stopRouteRecording();
139     }
140 }
141
142 /**
143   *This slot function is called when satellite picture timer timeout(400ms).
144   */
145 void RouteSaveDialog::timerSatellitePictureTimeout()
146 {
147     //If satellite picture visible.
148     if (ui->labelRouteSatellitePicture->isVisible() == 1)
149     {
150         ui->labelRouteSatelliteStatus->setVisible(0);
151         ui->labelRouteSatellitePicture->setVisible(0);
152     }
153     else
154     {
155         ui->labelRouteSatelliteStatus->setVisible(1);
156         ui->labelRouteSatellitePicture->setVisible(1);
157     }
158     timerSatellitePicture->start();
159 }
160
161 /**
162   *This slot function is called when route picture timer timeout(400ms).
163   */
164 void RouteSaveDialog::timerRoutePictureTimeout()
165 {
166     //If route picture visible.
167     if (ui->labelRoutePicture->isVisible() == 1)
168     {
169         ui->labelRouteStatus->setVisible(0);
170         ui->labelRoutePicture->setVisible(0);
171     }
172     else
173     {
174         ui->labelRouteStatus->setVisible(1);
175         ui->labelRoutePicture->setVisible(1);
176     }
177     timerRoutePicture->start();
178 }
179
180 /**
181   *
182   */
183 void RouteSaveDialog::gpsStatus()
184 {
185     //IF GPS start button clicked
186     if (buttonStatus == false)
187     {
188         //If GPS find 4 satellite.
189         if (location->getSatellitesInUse() >= 4)
190         {
191             //Satellite picture and label
192             ui->labelRouteSatelliteStatus->setText("GPS Ready");
193             ui->labelRouteSatelliteStatus->setVisible(1);
194             ui->labelRouteSatellitePicture->setVisible(1);
195             timerSatellitePicture->stop();
196
197             //Route picture and label
198             ui->labelRouteStatus->setText("Recorded " + QString::number(gpsData->roundCounter) + " route point");
199             ui->labelRouteStatus->setVisible(1);
200             ui->labelRoutePicture->setVisible(1);
201             timerRoutePicture->start();
202
203             //Set GPS speed.
204             gpsSpeed.sprintf("%.0f",location->getSpeed());
205             ui->labelGpsSpeed->setText(gpsSpeed + " km/h");
206             ui->labelGpsSpeed->setVisible(1);
207
208             //Start route recording
209             gpsData->startRouteRecording();
210         }
211
212         //If GPS find less than 4 satellite.
213         else
214         {
215             //Satellite picture and label
216             ui->labelRouteSatelliteStatus->setText("Searching satellite");
217             ui->labelRouteSatelliteStatus->setVisible(1);
218             ui->labelRouteSatellitePicture->setVisible(1);
219             timerSatellitePicture->start();
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     }
230     else
231     {
232         //Satellite picture and label
233         ui->labelRouteSatelliteStatus->setText("Searching satellite");
234         ui->labelRouteSatelliteStatus->setVisible(0);
235         ui->labelRouteSatellitePicture->setVisible(0);
236         timerSatellitePicture->stop();
237
238         //Route picture and label
239         ui->labelRouteStatus->setVisible(0);
240         ui->labelRoutePicture->setVisible(0);
241         timerRoutePicture->stop();
242
243         //GPS speed label
244         ui->labelGpsSpeed->setVisible(0);
245     }
246 }
247
248 /**
249   * This slot function is called when routeDialog emit sendroute (sendPushButton).
250   */
251 void RouteSaveDialog::sendRoute()
252 {
253     emit sendroute(); //Emit mainwindow clientSendRoute
254 }