-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprogramengine.h
More file actions
147 lines (104 loc) · 3.46 KB
/
programengine.h
File metadata and controls
147 lines (104 loc) · 3.46 KB
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
#ifndef PROGRAMENGINE_H
#define PROGRAMENGINE_H
#include <QObject>
#include <QDebug>
#include <QTime>
#include <QTimer>
#include <fstream> //File saving
#include <iostream>
#include <vector>
#include "time.h"
#include "time.h"
#include "text.h"
#include "speed.h"
#include "table.h"
using namespace std;
struct statData{
//режим
string name;
//текст
int time;
int speed;
int mistakes;
int mode;
void saveStruct(){
ofstream fout;
fout.open("C:\\Users\\Vlad\\Desktop\\STATTYPINGTUTOR.txt",ios::app);
if (!fout)
cout << "Cannot open file.\n";
QDateTime dateTime = QDateTime::currentDateTime();
QString str1 = dateTime.toString("hh:mm:ss|dd.MM.yyyy");
fout << name << " " << time << " " << speed << " " << mistakes << " " << str1.toStdString() << " " << mode << " ";
fout.close();
qDebug() << str1 << "Data saved!";
//Reading of the table in table.cpp/.h
}
};
class programEngine : public QObject // engine`s class
{
Q_OBJECT
Q_PROPERTY(QString secsInfo READ getTime NOTIFY timeChanged) // time management
Q_PROPERTY(QString currentText READ getText NOTIFY updateQmlText) // text update
Q_PROPERTY(int average_speed READ getAverageSpeed NOTIFY speedChanged) // speedChanged
Q_PROPERTY(int current_speed READ getCurrentSpeed NOTIFY speedChanged) // speedChanged
Q_PROPERTY(int currentChar READ getChar NOTIFY charChanged) //charChanged
Q_PROPERTY(int numMistake MEMBER mistakes NOTIFY mistakeDone) // mistake done
Q_PROPERTY(int currLang READ getCurrentLanguage NOTIFY langChanged) //language
public:
explicit programEngine(QObject *parent = 0);
Q_INVOKABLE int prepareRound();
Q_INVOKABLE int startRound();
Q_INVOKABLE void stopRound();
Q_INVOKABLE bool isRight(QString text); // Input text verifying
Q_INVOKABLE void changeMode(int x){ mode = x;}
Q_INVOKABLE void changeName(QString x){ nickname = x;}
Q_INVOKABLE void changeText(int x){ textValue = x;}
Q_INVOKABLE int getTextNumber(){qDebug() << pointerToText->getTextNumber();return pointerToText->getTextNumber();}
void setTextNumber(int x){textNum = x;}
Table* getTablePointer(){return pointerToTable;}
private:
int getAverageSpeed(){return pointerToSpeed->getAverageSpeed();}
int getCurrentSpeed(){return pointerToSpeed->getCurrentSpeed();}
//new
QString getTime(){return pointerToTime->getTime();}
QString getText(){return pointerToText->getText();}
int getChar(){return pointerToText->getChar();}
int getCurrentLanguage(){return pointerToText->getLang();}
void createStruct();
public slots:
void Timer(); // 1-second signal coming from Time
void showText();
signals:
// Time
void timeChanged();
// Connected with TEXT
void updateQmlText(); //Qml
void showQmlText();
void updateText(); //Text
void newText();
// Round control
void roundStarted();
void roundEnded();
// Gui control
void speedChanged();
void charChanged();
void clearTextInput();
void clearTextOutput();
void mistakeDone();
void modelChanged();
void langChanged();
void activeRound();
private:
// m - member
Text* pointerToText;
Time* pointerToTime;
Speed* pointerToSpeed;
Table* pointerToTable;
int mistakes;
bool isRightNow;
int mode;
QString nickname;
int textValue;
int textNum;
};
#endif // PROGRAMENGINE_H