#include "training.h" #include "ui_training.h" #include #include #include #include #include #include "unistd.h" 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::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; }