#include "windowssettings.h" #include "ui_windowssettings.h" #include #include #include #include #include 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> 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; }