diff --git a/mainwindow.cpp b/mainwindow.cpp index ccb6e0a..6b87bee 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -45,7 +45,8 @@ MainWindow::~MainWindow() } void MainWindow::WindowTraining(){ - + this->interfaceTraining = new Training(this, this->db); + this->interfaceTraining->show(); } void MainWindow::NewWindowSettings(){ diff --git a/mainwindow.h b/mainwindow.h index 68d7625..44060c7 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -9,6 +9,7 @@ #include "windowssettings.h" #include "windowrennliste.h" #include "windowrennliste2.h" +#include "training.h" namespace Ui { class MainWindow; @@ -31,6 +32,7 @@ public slots: private: + Training *interfaceTraining; void closeEvent(QCloseEvent *event); DataBase *db; Ui::MainWindow *ui; diff --git a/training.cpp b/training.cpp index 653e672..7911629 100644 --- a/training.cpp +++ b/training.cpp @@ -1,14 +1,130 @@ #include "training.h" #include "ui_training.h" +#include +#include +#include +#include +#include +#include "unistd.h" -Training::Training(QWidget *parent) : +using std::vector; +using std::string; +using std::cout; +using std::endl; + +Training::Training(QWidget *parent, DataBase *db) : QMainWindow(parent), ui(new Ui::Training) { ui->setupUi(this); + this->db = db; + string statement = "select mindestrundendauer from renndauer where id like 1"; + + this->minTimeOneRound = this->db->getData(statement, 1)[0][0].toInt(); + this->finished = false; + + firstTimeDea = true; + firstTimeShell = true; + started = true; + + paused = false; + + this->Hardware = new HardwareSetup; + Hardware->start(); + QObject::connect(Hardware, SIGNAL(Dea()), this, SLOT(deaSlot())); + QObject::connect(Hardware, SIGNAL(Shell()), this, SLOT(shellSlot())); + //QObject::connect(this->ui->pBNextRace, SIGNAL(clicked()), this, SLOT(prepareNextRace())); + //QObject::connect(this->ui->pBStop, SIGNAL(clicked()), this, SLOT(stopClicked())); + + QShortcut *shortcut = new QShortcut(QKeySequence("Ctrl+Q"), this); + QObject::connect(shortcut, SIGNAL(activated()), this, SLOT(close())); + +} +void Training::prepareNextRace(){ + this->firstTimeShell = true; + this->firstTimeDea = true; + + this->ui->lWShellTime->clear(); + this->ui->lWDeaTime->clear(); + + this->ui->lBestZeitDea->setText("∞"); + this->ui->lBestZeitShell->setText("∞"); + this->ui->lCurRoundTimeShell->setText("∞"); + this->ui->lCurRoundDea->setText("∞"); + + + this->finished = false; + this->paused = false; + this->started = false; } +void Training::stopClicked(){ + cout << "Shortcut" << endl; +} + + + + +void Training::shellSlot(){ + if(started && !paused && !this->finished){ + if(firstTimeShell){ + firstTimeShell = false; + counterShell.start(); + } + else{ + long zeit = counterShell.getTime(); + VecShell.push_back(zeit); + QListWidgetItem *item = new QListWidgetItem; + if(getMinimum(VecShell) == zeit && VecShell.size() > 1){ + item->setBackgroundColor(Qt::green); + } + item->setText(QString::number((double)zeit/1000)); + ui->lWShellTime->addItem(item); + + ui->lBestZeitShell->setText(QString::number((double)getMinimum(VecShell)/1000)); + ui->lCurRoundTimeShell->setText(QString::number((double)zeit/1000)); + } + } +} +void Training::closeEvent(QCloseEvent *event){ + +} + +void Training::deaSlot(){ + if(started && !paused && !this->finished){ + if(firstTimeDea){ + firstTimeDea = false; + counterDea.start(); + } + else{ + long zeit = counterDea.getTime(); + VecDea.push_back(zeit); + QListWidgetItem *item = new QListWidgetItem; + if(getMinimum(VecDea) == zeit && VecDea.size() > 1){ + item->setBackgroundColor(Qt::green); + } + item->setText(QString::number((double)zeit/1000)); + ui->lWDeaTime->addItem(item); + + ui->lBestZeitDea->setText(QString::number((double)getMinimum(VecDea)/1000)); + ui->lCurRoundDea->setText(QString::number((double)zeit/1000)); + } + } +} + +long Training::getMinimum(std::vector a){ + long minimum = a[0]; + for(unsigned int i = 0; i < a.size(); i++){ + if(a[i] < minimum){ + minimum = a[i]; + } + } + return minimum; +} Training::~Training() { + this->Hardware->setStop(); + usleep(1000); + delete this->Hardware; delete ui; } diff --git a/training.h b/training.h index fa875c4..950d81c 100644 --- a/training.h +++ b/training.h @@ -1,7 +1,11 @@ #ifndef TRAINING_H #define TRAINING_H - +#include "hardwaresetup.h" +#include +#include +#include "counter.h" #include +#include "database.h" namespace Ui { class Training; @@ -12,11 +16,33 @@ class Training : public QMainWindow Q_OBJECT public: - explicit Training(QWidget *parent = 0); + explicit Training(QWidget *parent, DataBase *db); ~Training(); private: + void prepareNextRace(); + Ui::Training *ui; + + void closeEvent(QCloseEvent *event); + bool started; + HardwareSetup *Hardware; + bool firstTimeShell; + bool firstTimeDea; + std::vector VecShell; + std::vector VecDea; + long getMinimum(std::vector a); + bool paused; + bool finished; + Counter counterShell; + Counter counterDea; + DataBase *db; + long minTimeOneRound; +public slots: + void deaSlot(); + void shellSlot(); + + void stopClicked(); }; #endif // TRAINING_H diff --git a/training.ui b/training.ui index afd4df9..49763c6 100644 --- a/training.ui +++ b/training.ui @@ -108,25 +108,7 @@ - - - - - - 0 - 0 - - - - - 17 - - - - Verbleibende Zeit - - - + @@ -135,362 +117,7 @@ 100 - - - - - - - - - - - - 23 - 23 - - - - - 23 - 23 - - - - - - - - - 23 - 23 - - - - background-image: url(:/new/prefix1/ampel.png); - - - - - - - - - - - - 23 - 23 - - - - - 23 - 23 - - - - - - - - - 23 - 23 - - - - background-image: url(:/new/prefix1/ampel.png); - - - - - - - - - - - - - - - - 23 - 23 - - - - - 23 - 23 - - - - - - - - - 23 - 23 - - - - background-image: url(:/new/prefix1/ampel.png); - - - - - - - - - - - - 23 - 23 - - - - - 23 - 23 - - - - - - - - - 23 - 23 - - - - background-image: url(:/new/prefix1/ampel.png); - - - - - - - - - - - - - - - - 23 - 23 - - - - - 23 - 23 - - - - - - - - - 23 - 23 - - - - background-image: url(:/new/prefix1/ampel.png); - - - - - - - - - - - - 23 - 23 - - - - - 23 - 23 - - - - - - - - - 23 - 23 - - - - background-image: url(:/new/prefix1/ampel.png); - - - - - - - - - - - - - - - - 23 - 23 - - - - - 23 - 23 - - - - - - - - - 23 - 23 - - - - background-image: url(:/new/prefix1/ampel.png); - - - - - - - - - - - - 23 - 23 - - - - - 23 - 23 - - - - - - - - - 23 - 23 - - - - background-image: url(:/new/prefix1/ampel.png); - - - - - - - - - - - - - - - - 23 - 23 - - - - - 23 - 23 - - - - - - - - - 23 - 23 - - - - background-image: url(:/new/prefix1/ampel.png); - - - - - - - - - - - - 23 - 23 - - - - - 23 - 23 - - - - - - - - - 23 - 23 - - - - background-image: url(:/new/prefix1/ampel.png); - - - - - - - - - - + diff --git a/windowssettings.cpp b/windowssettings.cpp index db38b06..61214ad 100644 --- a/windowssettings.cpp +++ b/windowssettings.cpp @@ -53,9 +53,10 @@ WindowsSettings::WindowsSettings(DataBase *db, QWidget *parent) : ui->lEDeaSteilkurveAussen->setText(res[0][4]); //duration prepare - statement = "select dauer from renndauer"; - res = db->getData(statement, 1); + statement = "select dauer, mindestrundendauer from renndauer"; + res = db->getData(statement, 2); this->ui->leRenndauer->setText(res[0][0]); + this->ui->lEMinRundenzeit->setText(res[0][1]); } void WindowsSettings::AbbrechenSlot(){ @@ -63,7 +64,7 @@ void WindowsSettings::AbbrechenSlot(){ delete this; } void WindowsSettings::SaveDauerSlot(){ - string statement = "update renndauer set dauer="+this->ui->leRenndauer->text().toStdString()+" where id like 1"; + string statement = "update renndauer set dauer="+this->ui->leRenndauer->text().toStdString()+", mindestrundendauer="+this->ui->lEMinRundenzeit->text().toStdString()+" where id like 1"; this->db->setData(statement); } void WindowsSettings::SaveDauerAndExitSlot(){