Average calculation for acceleration added.
[speedfreak] / Client / carmainwindow.h
1 /*
2  * CarMainWindow main class
3  *
4  * @author     Toni Jussila <toni.jussila@fudeco.com>
5  * @author     Janne Änäkkälä <janne.anakkala@fudeco.com>
6  * @author     Tiina Kivilinna-Korhola <tiina.kivilinna-korhola@fudeco.com>
7  * @author     Olavi Pulkkinen <olavi.pulkkinen@fudeco.com>
8  * @author     Rikhard Kuutti <rikhard.kuutti@fudeco.com>
9  * @author     Kai Rasilainen <kai.rasilainen@fudeco.com>
10  * @copyright  (c) 2010 Speed Freak team
11  * @license    http://opensource.org/licenses/gpl-license.php GNU Public License
12  */
13
14 #ifndef CARMAINWINDOW_H
15 #define CARMAINWINDOW_H
16
17 #include <QMainWindow>
18 #include <QStandardItemModel>
19 #include <QModelIndex>
20 #include <QStringList>
21 #include <QString>
22 #include <QNetworkAccessManager>
23 #include <QNetworkRequest>
24 #include <QNetworkReply>
25 #include <QMessageBox>
26 #include <QStandardItemModel>
27 #include <QBuffer>
28 #include <QByteArray>
29 #include <QDebug>
30 #include <qdatetime.h>
31 #include "resultdialog.h"
32 //#include "measuredialog.h"
33 #include "welcomedialog.h"
34 #include "loginwindow.h"
35 #include "registration.h"
36 #include "xmlwriter.h"
37 #include "xmlreader.h"
38 #include "ui_carmainwindow.h"
39 #include "stringlistmodel.h"
40 #include "measures.h"
41 #include "accelerometer.h"
42 #include "categorylist.h"
43 #include "httpclient.h"
44 #include "routedialog.h"
45 #include "calculate.h"
46 #include "gpsdata.h"
47 #include "movingaverage.h"
48 #include <maemo5location.h>
49
50 namespace Ui {
51     class CarMainWindow;
52 }
53
54 class CarMainWindow : public QMainWindow {
55     Q_OBJECT
56 public:
57     CarMainWindow(QWidget *parent = 0);
58     ~CarMainWindow();
59     Registration *myRegistration;       //Check if this should be public or private
60     LoginWindow *myLogin;
61     GPSData *gpsData;
62
63     void setComboBoxStartTabUnits(QStringList units);       //Start-tab view
64     void setListViewStartTabAccelerationCategories(QStringList numbers); //Start-tab view
65     void setLabelInfoToUser(QString infoText);
66
67 protected:
68     void changeEvent(QEvent *e);
69
70 private:
71     Ui::CarMainWindow *ui;
72     ResultDialog *result;
73     //MeasureDialog *measure;
74     WelcomeDialog *welcomeDialog;
75     CategoryList *myCategorylist;
76     HttpClient *myHttpClient;
77     RouteDialog *myRoute;
78     Maemo5Location *location;
79     //void initCategoryCompoBox();
80     void initComboBoxStartTabUnits();                   //Start-tab view
81     void initListViewStartTabAccelerationCategories();  //Start-tab view
82     void setListViewTopList(QString category, int size);    //Top-tab view
83     void resetAccelerometerMeasurements();
84     void calibrateAccelerometer();
85     void setTimeAxisGapAndShowResult(double pTime);
86
87 private:
88     QStringList accelerationCategoriesStartTab;         //Start-tab view
89     QStringList units;                                  //Start-tab view
90     QString recentCategory;
91
92     QTimer *timer;
93     Accelerometer *accelerometer;
94     MovingAverage* movingAverageZ;
95     double time;
96     double speed;
97     Measures *measures;
98
99     QModelIndex choice;
100     int choiceInt;
101     QStringList catList;
102
103     Calculate *calculate;
104
105     bool reverseAccelerationFlag;
106     bool vehicleStartedMoving;
107     bool isNewRun;
108     bool isSetup;
109
110     double stopTime;
111     double accelerationStartThreshold;
112     double currentAcceleration;
113     double currentTime;
114     double previousTime;
115     //double firstAcceleration;
116
117     QTimer *accelerometerTimer;
118     QTime stopWatch;
119
120     QString currentAccelerationString;
121     QString currentSpeed;
122     QString distanceTraveled;
123     QString horsepower;
124     QString totalTime;
125
126     QDateTime *gpsTime;
127     QTimer *gpsTimer;
128     double gpsSpeedNow;     //Route-tab view
129     double gpsSpeedPrevious;//Route-tab view
130     double gpsAcceleration; //Route-tab view
131     double timeFromGps;     //Route-tab view
132     double gpsSpeed;        //Route-tab view
133     int gpsUpdateTime;      //Route-tab view
134
135     int counterForSaveResults;
136
137 signals:
138     void speedAchieved();
139     void userNameChanged();
140
141 private slots:
142     void on_calibrateButton_clicked();
143     void gpsTimerTimeout();                             //Route-tab view
144     void on_startRecPushButton_clicked();               //Route-tab view
145     void on_pushButtonShowResultDialog_clicked();
146     void on_gpsOnCheckBox_stateChanged(int GPSState);   //Route-tab view
147     void gpsStatus();                                   //Route-tab view
148     void on_drawRoutePushButton_clicked();
149     void on_pushButtonSendResult_clicked();
150     void on_pushButtonMeasureTabAbort_clicked();
151     void on_manualStartButton_clicked();
152     void on_setUserPushButton_clicked();
153     void on_registratePushButton_clicked();
154     void on_comboBoxTopCategory_currentIndexChanged(QString category);          //Top-tab view
155     void on_listViewStartTabAccelerationCategories_clicked(QModelIndex index);  //Start-tab view
156     void updateComboBoxStartTabUnits(QString unit);     //Start-tab view
157     void openResultView();
158     void on_buttonTopRefresh_clicked();                 //Top-tab view: button
159     void on_autoStartButton_clicked();                  //Start-tab view: button
160     void after_timeout();
161     void updateUserName();
162     void regUserToServer();
163     void userLogin();
164     void readAccelerometerData();
165     void handleCheckPoint(double totalTime, double currentSpeed);
166     void setCategoryCompoBox();                         //Top-tab
167     void showTop10();
168
169 };
170
171 #endif // CARMAINWINDOW_H