-
Notifications
You must be signed in to change notification settings - Fork 0
/
DataBaseEngine.h
176 lines (131 loc) · 4.29 KB
/
DataBaseEngine.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#ifndef DATABASE_H
#define DATABASE_H
#include "Generators.h"
#include "LineChartWidget.h"
#include <QMessageBox>
#include <QTableView>
#include <QtSql/QSqlTableModel>
#include <QAbstractTableModel>
#include <QItemDelegate>
class TableModelOfVectors;
class DoubleSpinBoxDelegate;
struct structHTML
{
QString header;
QString table;
QString footer;
QString tdOpen;
QString tdClose;
QString trOpen;
QString trClose;
};
class DataBaseEngine: public QWidget
{
Q_OBJECT
size_t countRowsOfDataBase;
size_t countColumnOfDataBase;
/* Magic Number */
enum
{
MagicNumber = 0x44415441
};
bool switchTableModel;
QString sensor;
QString date;
QString *datePtr;
QString *sensorPtr;
QString errorTitleGeneral;
QString successTitleGeneral;
QString overflowWarningTitle;
QString overflowWarningBody;
QString overflowWarningButtons[3];
QString emptyDataBaseTableDialog;
QString clearDataBaseSlot[3];
QString saveHTMLFileSlot[4];
QString saveTextFileSlot[4];
QString saveDataFileSlot[4];
QString loadTextFileSlot[6];
QString loadDataFileSlot[5];
Generators *generator;
LineChartWidget *lineChartWidget;
QVector<QVector<double> > sensorsReadingsVector2D;
QVector<QString> sensorsDateVector;
QTableView *tableViewWidget;
QSqlTableModel *sqlTableModel;
TableModelOfVectors *tableModelOfVectors;
DoubleSpinBoxDelegate *spinBoxDelegate;
void readDataBaseTableToVectors(QSqlQuery &a_query);
#ifdef _DEBUG
void printVector2DDebug();
#endif
void showTableModelOfVectors();
void dropingTable();
public slots:
void addRandomRowToSQLiteDataBase();
void clearDataBase();
void loadTableFromHeader();
void saveTableToHtmlFile();
void saveTableToTextFile();
void saveTableToDataFile();
void loadTableFromTextFile();
void loadTableFromDataFile();
void changeTableModel();
void setNoEditTablePolicy();
void setEditTablePolicy();
void emptyDataBaseCriticalError();
void setColumnsGlobal(int);
public:
DataBaseEngine(QWidget *parent = 0);
bool connectToSQLiteDataBase();
void createTableInSQLiteDataBase();
void formTableInSQLiteDataBase();
bool getSwitchTable();
QTableView *getTableViewWidget();
QVector<QVector<double> > &getSensorsReadingsVector2D();
QVector<QString> &getSensorsDateVector();
void retranslateUi();
int getColumnsCount();
~DataBaseEngine();
};
class TableModelOfVectors: public QAbstractTableModel
{
private:
QVector<QString> sensorDateOfReceivedVector;
QVector<QVector<double> > sensorReadingsOfReceived2DVector;
QStringList header_data;
QColor lightYellow;
const QString *dateTable;
const QString *sensorTable;
int rowCount(const QModelIndex &) const;
int columnCount(const QModelIndex &) const;
QVariant data(const QModelIndex &index, int role) const;
QVariant headerData(int section, Qt::Orientation orientation,
int role) const;
public:
TableModelOfVectors(QObject *parent = 0);
void setCurrencyVectors(const QVector<QString> &vectorSensorsDate,
const QVector<QVector<double> > &vectorSensorReadings2D);
void setHeaderDataOfTable(const QString *date,
const QString *sensor);
~TableModelOfVectors();
};
class DoubleSpinBoxDelegate : public QItemDelegate
{
Q_OBJECT
int decimals;
void setDecimals(int decimals);
int getDecimals();
protected:
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
const QModelIndex &index) const;
void setEditorData(QWidget *editor, const QModelIndex &index) const;
void setModelData(QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index) const;
void updateEditorGeometry(QWidget *editor,
const QStyleOptionViewItem &option,
const QModelIndex &index) const;
public:
DoubleSpinBoxDelegate(QObject *parent = 0);
~DoubleSpinBoxDelegate();
};
#endif // DATABASE_H