Major changes to Accelerometer handling
[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 "resultdialog.h"
31 //#include "measuredialog.h"
32 #include "welcomedialog.h"
33 #include "loginwindow.h"
34 #include "registration.h"
35 #include "xmlwriter.h"
36 #include "xmlreader.h"
37 #include "ui_carmainwindow.h"
38 #include "stringlistmodel.h"
39 #include "measures.h"
40 #include "accelerometer.h"
41 #include "categorylist.h"
42 #include "httpclient.h"
43 #include "routedialog.h"
44 #include "calculate.h"
45
46 namespace Ui {
47     class CarMainWindow;
48 }
49
50 class CarMainWindow : public QMainWindow {
51     Q_OBJECT
52 public:
53     CarMainWindow(QWidget *parent = 0);
54     ~CarMainWindow();
55     Registration *myRegistration;       //Check if this should be public or private
56
57
58     void setComboBoxStartTabUnits(QStringList units);       //Start-tab view
59     void setListViewStartTabAccelerationCategories(QStringList numbers); //Start-tab view
60     void setListViewTopList(QString category, int size);    //Top-tab view
61     void setCategoryCompoBox();                             //Top-tab
62
63 protected:
64     void changeEvent(QEvent *e);
65
66 private:
67     Ui::CarMainWindow *ui;
68     ResultDialog *result;
69     //MeasureDialog *measure;
70     WelcomeDialog *welcomeDialog;
71     CategoryList *categorylist;
72     HttpClient *myHttpClient;
73     LoginWindow *myLogin;
74     RouteDialog *myRoute;
75     //void initCategoryCompoBox();
76     void initComboBoxStartTabUnits();                   //Start-tab view
77     void initListViewStartTabAccelerationCategories();  //Start-tab view
78     void initializeMeasures();
79     void resetAccelerometerMeasurements();
80     void calibrateAccelerometer();
81
82 private:
83     QStringList accelerationCategoriesStartTab;         //Start-tab view
84     QStringList units;                                  //Start-tab view
85     QStringList categories;                             //Top-tab view
86
87     QTimer *timer;
88     Accelerometer *accelerometer;
89     double time;
90     double speed;
91     Measures *measures;
92
93     QModelIndex choice;
94     int choiceInt;
95
96     Calculate *calculate;
97
98     bool reverseAccelerationFlag;
99     bool vehicleStartedMoving;
100     bool isNewRun;
101     bool isSetup;
102
103     double stopTime;
104     double accelerationStartThreshold;
105     double currentAcceleration;
106     double currentTime;
107     double previousTime;
108     double firstAcceleration;
109
110     QTimer *accelerometerTimer;
111     QTime stopWatch;
112
113     QString currentAccelerationString;
114     QString currentSpeed;
115     QString distanceTraveled;
116     QString horsepower;
117     QString totalTime;
118
119 signals:
120     void speedAchieved();
121     void userNameChanged();
122
123 private slots:
124     void on_pushButtonShowResultDialog_clicked();
125     void on_drawRoutePushButton_clicked();
126     void on_pushButtonSendResult_clicked();
127     void on_pushButtonMeasureTabAbort_clicked();
128     void on_manualStartButton_clicked();
129     void on_setUserPushButton_clicked();
130     void on_registratePushButton_clicked();
131     void on_comboBoxTopCategory_activated(QString );
132     //void on_pushButton_clicked();
133     void on_comboBoxTopCategory_currentIndexChanged(QString category);          //Top-tab view
134     void on_listViewStartTabAccelerationCategories_clicked(QModelIndex index);  //Start-tab view
135     void updateComboBoxStartTabUnits(QString unit);     //Start-tab view
136     void openResultView();
137     void on_buttonTopRefresh_clicked();                 //Top-tab view: button
138     void on_autoStartButton_clicked();                  //Start-tab view: button
139     void after_timeout();
140     void updateUserName();
141     void regUserToServer();
142     void userLogin();
143     void readAccelerometerData();
144     void handleCheckPoint(double totalTime, double currentSpeed);
145 };
146
147 #endif // CARMAINWINDOW_H