added Traimode

This commit is contained in:
2014-09-24 22:35:51 +02:00
parent ff954eced0
commit 0d51efea63
6 changed files with 155 additions and 382 deletions

View File

@@ -1,14 +1,130 @@
#include "training.h"
#include "ui_training.h"
#include <QObject>
#include <string>
#include <sstream>
#include <iostream>
#include <QShortcut>
#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<long> 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;
}