170 lines
6.8 KiB
C++
170 lines
6.8 KiB
C++
#include "windowssettings.h"
|
|
#include "ui_windowssettings.h"
|
|
#include <iostream>
|
|
#include <stdio.h>
|
|
#include <string>
|
|
#include <time.h>
|
|
#include <vector>
|
|
|
|
using std::cout;
|
|
using std::endl;
|
|
using std::string;
|
|
using std::vector;
|
|
|
|
WindowsSettings::WindowsSettings(DataBase * db, QWidget * parent)
|
|
: QMainWindow(parent), ui(new Ui::WindowsSettings) {
|
|
ui->setupUi(this);
|
|
|
|
QObject::connect(ui->pBSpeichernStrecke, SIGNAL(clicked()), this,
|
|
SLOT(StreckeSpeichernSlot()));
|
|
QObject::connect(ui->pBAbbrechenStrecke, SIGNAL(clicked()), this,
|
|
SLOT(AbbrechenSlot()));
|
|
QObject::connect(this->ui->pbAbbrechenDauer, SIGNAL(clicked()), this,
|
|
SLOT(AbbrechenSlot()));
|
|
QObject::connect(this->ui->pbSaveDauer, SIGNAL(clicked()), this,
|
|
SLOT(SaveDauerSlot()));
|
|
QObject::connect(this->ui->pbSaveAndExitDauer, SIGNAL(clicked()), this,
|
|
SLOT(SaveDauerAndExitSlot()));
|
|
|
|
// update minimal lap time on changeing minimal sector time
|
|
QObject::connect(this->ui->lEMinTimeSec1, SIGNAL(textChanged(QString)),
|
|
this, SLOT(repaintMinLapTime()));
|
|
QObject::connect(this->ui->lEMinTimeSec2, SIGNAL(textChanged(QString)),
|
|
this, SLOT(repaintMinLapTime()));
|
|
QObject::connect(this->ui->lEMinTimeSec3, SIGNAL(textChanged(QString)),
|
|
this, SLOT(repaintMinLapTime()));
|
|
|
|
this->db = db;
|
|
|
|
// Shell prepare
|
|
string statement =
|
|
"select geraden, kurven_aussen, "
|
|
"kurven_innen, steilkurve_innen, steilkurve_aussen, seit "
|
|
"from Strecke where id_bahn like 1 order by seit DESC limit 1";
|
|
vector<vector<QString>> res;
|
|
|
|
res = db->getData(statement, 6);
|
|
ui->lEShellGeraden->setText(res[0][0]);
|
|
ui->lEShellKurvenAussen->setText(res[0][1]);
|
|
ui->lEShellKurvenInnen->setText(res[0][2]);
|
|
ui->lEShellSteilkurveInnen->setText(res[0][3]);
|
|
ui->lEShellSteilkurveaussen->setText(res[0][4]);
|
|
|
|
// Dea prepare
|
|
statement = "select geraden, kurven_aussen, "
|
|
"kurven_innen, steilkurve_innen, steilkurve_aussen, seit "
|
|
"from Strecke where id_bahn like 2 order by seit DESC limit 1";
|
|
|
|
res = db->getData(statement, 6);
|
|
ui->lEDeaGeraden->setText(res[0][0]);
|
|
ui->lEDeaKurvenAussen->setText(res[0][1]);
|
|
ui->lEDeaKurvenInnen->setText(res[0][2]);
|
|
ui->lEDeaSteilkurveInnen->setText(res[0][3]);
|
|
ui->lEDeaSteilkurveAussen->setText(res[0][4]);
|
|
|
|
// duration prepare
|
|
statement = "select dauer, mindestrundendauer, minsec1, minsec2, minsec3 "
|
|
"from renndauer";
|
|
res = db->getData(statement, 5);
|
|
this->ui->leRenndauer->setText(res[0][0]);
|
|
this->ui->lEMinTimeSec1->setText(res[0][2]);
|
|
this->ui->lEMinTimeSec2->setText(res[0][3]);
|
|
this->ui->lEMinTimeSec3->setText(res[0][4]);
|
|
int minLapTime = res[0][2].toInt() + res[0][3].toInt() + res[0][4].toInt();
|
|
this->ui->lEMinRundenzeit->setText(QString::number(minLapTime));
|
|
|
|
statement =
|
|
"SELECT id, minimumroundtime FROM rennen order by id DESC limit 1";
|
|
res = this->db->getData(statement, 2);
|
|
this->rennId = res[0][0].toInt();
|
|
this->ui->lEMinRundenzeitAktRennen->setText(res[0][1]);
|
|
}
|
|
void WindowsSettings::repaintMinLapTime() {
|
|
int minlapTime = 0;
|
|
minlapTime += this->ui->lEMinTimeSec1->text().toInt();
|
|
minlapTime += this->ui->lEMinTimeSec2->text().toInt();
|
|
minlapTime += this->ui->lEMinTimeSec3->text().toInt();
|
|
this->ui->lEMinRundenzeit->setText(QString::number(minlapTime));
|
|
this->ui->lEMinRundenzeitAktRennen->setText(QString::number(minlapTime));
|
|
}
|
|
void WindowsSettings::AbbrechenSlot() {
|
|
this->close();
|
|
delete this;
|
|
}
|
|
void WindowsSettings::SaveDauerSlot() {
|
|
string statement =
|
|
"update renndauer set "
|
|
"dauer=" +
|
|
this->ui->leRenndauer->text().toStdString() + ", " +
|
|
"mindestrundendauer=" +
|
|
this->ui->lEMinRundenzeit->text().toStdString() + ", " +
|
|
"minsec1=" + this->ui->lEMinTimeSec1->text().toStdString() + ", " +
|
|
"minsec2=" + this->ui->lEMinTimeSec2->text().toStdString() + ", " +
|
|
"minsec3=" + this->ui->lEMinTimeSec3->text().toStdString() + " " +
|
|
" where id like 1";
|
|
cout << statement << endl;
|
|
this->db->setData(statement);
|
|
statement = "update rennen set minimumroundtime=" +
|
|
this->ui->lEMinRundenzeitAktRennen->text().toStdString() +
|
|
" where id like " + QString::number(this->rennId).toStdString();
|
|
this->db->setData(statement);
|
|
}
|
|
void WindowsSettings::SaveDauerAndExitSlot() {
|
|
this->SaveDauerSlot();
|
|
this->AbbrechenSlot();
|
|
}
|
|
|
|
void WindowsSettings::StreckeSpeichernSlot() {
|
|
QString shellGeraden, shellKurvenAussen, shellKurvenInnen, shellSteilAussen,
|
|
shellSteilInnen;
|
|
QString deaGeraden, deaKurvenAussen, deaKurvenInnen, deaSteilAussen,
|
|
deaSteilInnen;
|
|
shellGeraden = ui->lEShellGeraden->text();
|
|
shellKurvenAussen = ui->lEShellKurvenAussen->text();
|
|
shellKurvenInnen = ui->lEShellKurvenInnen->text();
|
|
shellSteilAussen = ui->lEShellSteilkurveaussen->text();
|
|
shellSteilInnen = ui->lEShellSteilkurveInnen->text();
|
|
QString statement = QString(
|
|
"insert into strecke (geraden, kurven_aussen, kurven_innen, "
|
|
"steilkurve_innen, steilkurve_aussen, seit, id_bahn)"
|
|
" values (" +
|
|
shellGeraden + ", " + shellKurvenAussen + ", " + shellKurvenInnen +
|
|
", " + shellSteilInnen + ", " + shellSteilAussen + ", '" +
|
|
QString::fromStdString(currentDateTime()) + "', 1)");
|
|
// cout << statement.toStdString() << endl;
|
|
db->setData(statement.toStdString());
|
|
|
|
deaGeraden = ui->lEDeaGeraden->text();
|
|
deaKurvenAussen = ui->lEDeaKurvenAussen->text();
|
|
deaKurvenInnen = ui->lEDeaKurvenInnen->text();
|
|
deaSteilAussen = ui->lEDeaSteilkurveAussen->text();
|
|
deaSteilInnen = ui->lEDeaSteilkurveInnen->text();
|
|
statement =
|
|
QString("insert into strecke (geraden, kurven_aussen, kurven_innen, "
|
|
"steilkurve_innen, steilkurve_aussen, seit, id_bahn)"
|
|
" values (" +
|
|
deaGeraden + ", " + deaKurvenAussen + ", " + deaKurvenInnen +
|
|
", " + deaSteilInnen + ", " + deaSteilAussen + ", '" +
|
|
QString::fromStdString(currentDateTime()) + "', 2)");
|
|
// cout << statement.toStdString() << endl;
|
|
db->setData(statement.toStdString());
|
|
}
|
|
|
|
WindowsSettings::~WindowsSettings() {
|
|
delete ui;
|
|
std::cout << "Destruktor einstellungen" << std::endl;
|
|
}
|
|
// Get current date/time, format is YYYY-MM-DD.HH:mm:ss
|
|
|
|
string WindowsSettings::currentDateTime() {
|
|
time_t now = time(0);
|
|
struct tm tstruct;
|
|
char buf[80];
|
|
tstruct = *localtime(&now);
|
|
// Visit http://en.cppreference.com/w/cpp/chrono/c/strftime
|
|
// for more information about date/time format
|
|
strftime(buf, sizeof(buf), "%Y-%m-%d.%X", &tstruct);
|
|
|
|
return buf;
|
|
}
|