Files
Rennbahn/windowrennliste.cpp

170 lines
6.4 KiB
C++

#include "windowrennliste.h"
#include "ui_windowrennliste.h"
#include <QColor>
#include <QBrush>
#include <iostream>
#include <QDebug>
#include "windowrace.h"
using std::vector;
using std::string;
WindowRennliste::WindowRennliste(DataBase *db, QWidget *parent) :
QMainWindow(parent),
ui(new Ui::WindowRennliste)
{
ui->setupUi(this);
this->windowClose = false;
this->selectedRow = 0;
this->ui->tWRennliste->setSelectionBehavior(QAbstractItemView::SelectRows);
this->ui->tWRennliste->setSelectionMode(QAbstractItemView::SingleSelection);
QObject::connect(this->ui->tWRennliste, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(listClick(const QModelIndex&)));
this->db = db;
string statement;
vector< vector<QString> > fahrer, autos, rennid;
statement = "select id_rennen from aktrennen group by id_rennen order by id_rennen DESC limit 1";
rennid = this->db->getData(statement, 1);
statement = "select fahrershellid, autoshellid, fahrerdeaid, autodeaid from aktrennen where id_rennen like "+rennid[0][0].toStdString();
this->tableData = db->getData(statement, 4);
this->ui->tWRennliste->setRowCount(this->tableData.size());
this->ui->tWRennliste->setColumnCount(6);
QStringList header;
header<< "Fahrer" << "Auto"<< "Zeit"<< "Fahrer"<< "Auto"<< "Zeit";
this->ui->tWRennliste->setHorizontalHeaderLabels(header);
for(int i = 0; i < this->ui->tWRennliste->horizontalHeader()->count();i++){
this->ui->tWRennliste->horizontalHeader()->setSectionResizeMode(i, QHeaderView::Stretch);
}
for(unsigned int i = 0; i < tableData.size(); i++){
statement = "select name from fahrer where id like " + tableData[i][0].toStdString();
fahrer = this->db->getData(statement, 1);
this->ui->tWRennliste->setItem(i, 0, new QTableWidgetItem(fahrer[0][0]));
this->ui->tWRennliste->item(i,0)->setFlags(Qt::ItemIsEnabled);
statement = "select name from AutoKonfiguration where id_auto like " + tableData[i][1].toStdString()+" order by seit DESC";
autos = this->db->getData(statement, 1);
this->ui->tWRennliste->setItem(i, 1, new QTableWidgetItem(autos[0][0]));
this->ui->tWRennliste->item(i,1)->setFlags(Qt::ItemIsEnabled);
this->ui->tWRennliste->setItem(i, 2, new QTableWidgetItem());
statement = "select name from fahrer where id like " + tableData[i][2].toStdString();
fahrer = this->db->getData(statement, 1);
this->ui->tWRennliste->setItem(i, 3, new QTableWidgetItem(fahrer[0][0]));
this->ui->tWRennliste->item(i,3)->setFlags(Qt::ItemIsEnabled);
statement = "select name from AutoKonfiguration where id_auto like " + tableData[i][3].toStdString()+" order by seit DESC";
autos = this->db->getData(statement, 1);
this->ui->tWRennliste->setItem(i, 4, new QTableWidgetItem(autos[0][0]));
this->ui->tWRennliste->item(i,4)->setFlags(Qt::ItemIsEnabled);
this->ui->tWRennliste->setItem(i, 5, new QTableWidgetItem());
}
for(int i = 0; i < 6; i++){
this->ui->tWRennliste->item(0, i)->setBackground(Qt::green);
}
}
void WindowRennliste::setWindowRace(WindowRace *instance){
this->instanceWindowRace = instance;
}
vector<QString> WindowRennliste::getDriverAndCarSettings(){
vector<QString> vec;
vec.push_back(this->ui->tWRennliste->item(this->selectedRow+1, 0)->text());
vec.push_back(this->ui->tWRennliste->item(this->selectedRow+1, 1)->text());
vec.push_back(this->ui->tWRennliste->item(this->selectedRow+1, 3)->text());
vec.push_back(this->ui->tWRennliste->item(this->selectedRow+1, 4)->text());
return vec;
}
vector<QString> WindowRennliste::getDriverAndCarId(){
//shellFahrer shellAuto deaFahrer deaAuto
return this->tableData[this->selectedRow];
}
void WindowRennliste::listClick(const QModelIndex & index){
QString driverShell = this->ui->tWRennliste->item(index.row(), 0)->text();
QString carShell = this->ui->tWRennliste->item(index.row(), 1)->text();
QString driverDea = this->ui->tWRennliste->item(index.row(), 3)->text();
QString carDea = this->ui->tWRennliste->item(index.row(), 4)->text();
vector<QString> vec;
vec.push_back(driverShell);
vec.push_back(carShell);
vec.push_back(driverDea);
vec.push_back(carDea);
this->instanceWindowRace->setDriverAndCar(vec);
this->instanceWindowRace->prepareNextRace();
this->setSelection(index.row());
this->sendIds();
}
void WindowRennliste::closeEvent(QCloseEvent *event){
if(!this->windowClose){
this->setWindowState(Qt::WindowMinimized);
event->ignore();
}
else{
event->accept();
}
}
void WindowRennliste::schliessen(){
this->windowClose = true;
this->close();
}
void WindowRennliste::setSelection(int row){
for(int i = 0; i < 6; i++){
this->ui->tWRennliste->item(this->selectedRow, i)->setBackground(Qt::yellow);
}
this->selectedRow = row;
for(int i = 0; i < 6; i++){
this->ui->tWRennliste->item(row, i)->setBackground(Qt::green);
}
this->sendIds();
vector<QString> vec;
vec.push_back(this->ui->tWRennliste->item(this->selectedRow, 0)->text());
vec.push_back(this->ui->tWRennliste->item(this->selectedRow, 1)->text());
vec.push_back(this->ui->tWRennliste->item(this->selectedRow, 3)->text());
vec.push_back(this->ui->tWRennliste->item(this->selectedRow, 4)->text());
this->instanceWindowRace->setDriverAndCar(vec);
}
void WindowRennliste::sendIds(){
this->instanceWindowRace->setDriverAndCarId(this->getDriverAndCarId());
}
void WindowRennliste::changeSelection(){
if(this->selectedRow + 1 < this->tableData.size()){
for(unsigned int i = 0; i < 6; i++){
this->ui->tWRennliste->item(this->selectedRow, i)->setBackground(Qt::gray);
this->ui->tWRennliste->item(this->selectedRow+1, i)->setBackground(Qt::green);
}
this->selectedRow += 1;
this->sendIds();
vector<QString> vec;
vec.push_back(this->ui->tWRennliste->item(this->selectedRow, 0)->text());
vec.push_back(this->ui->tWRennliste->item(this->selectedRow, 1)->text());
vec.push_back(this->ui->tWRennliste->item(this->selectedRow, 3)->text());
vec.push_back(this->ui->tWRennliste->item(this->selectedRow, 4)->text());
this->instanceWindowRace->setDriverAndCar(vec);
}
}
WindowRennliste::~WindowRennliste()
{
delete ui;
}