Rev 145 | Rev 147 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "qmdialogloadexternalteams.h"#include "ui_qmdialogloadexternalteams.h"#include "QFile"#include "QTextStream"#include "mainwindow.h"#include <QRegExp>#include "consts.h"#include "structs.h"#include "proto.h"QmDialogLoadExternalTeams::QmDialogLoadExternalTeams(const QString &efile,QWidget *parent) :QDialog(parent),ui(new Ui::QmDialogLoadExternalTeams){ui->setupUi(this);setWindowTitle("Load External Team Data");ui->fileName->setText(efile);// Open the users fileQFile file(efile);if ( ! file.open(QIODevice::ReadOnly | QIODevice::Text) ){MainWindow::showMessage("Cannot open external data file");return;}ui->tableWidget->setColumnCount(3 + ( 2 * config.num_legs) );// Process Each line of the fileQTextStream in(&file);int ii = 0;QRegExp csv_split("\"?,\"?");while (!in.atEnd()){QString line = in.readLine();line = line.trimmed(); // Remove leading and training White Spaceline.remove(0xA0); // M$ special uglynessQStringList parts = line.split(csv_split);QString first = parts.value(0);bool ok;if ( first.isEmpty() )continue;int team = first.toInt(&ok);if ( ! ok || team <= 0 )continue;ui->tableWidget->setRowCount(1+ii);// Insert Team numberui->tableWidget->setItem(ii, 0, new QTableWidgetItem(first));parts.removeFirst();// Extract Team Nameui->tableWidget->setItem(ii, 1, new QTableWidgetItem( parts.value(0) ) );parts.removeFirst();// Extract Team Catui->tableWidget->setItem(ii, 2, new QTableWidgetItem( parts.value(0)));parts.removeFirst();int yy = 0;while ( parts.count() > 0){// Name of competitorui->tableWidget->setItem(ii, 3+yy, new QTableWidgetItem( parts.value(0)));parts.removeFirst();// Posible age - if its a numberint age = parts.value(0).toInt(&ok);if ( ok && age > 0 ){ui->tableWidget->setItem(ii, 4+yy, new QTableWidgetItem( parts.value(0)));parts.removeFirst();}yy += 2;}ii++;}// Connect up buttonsconnect (ui->buttonBox, SIGNAL(accepted()), this, SLOT(loadData()));}QmDialogLoadExternalTeams::~QmDialogLoadExternalTeams(){delete ui;}void QmDialogLoadExternalTeams::loadData(void){qDebug ("LoadData");team_type team_buf;for ( int ii = 0; ii < ui->tableWidget->rowCount(); ii++){QTableWidgetItem *item;item = ui->tableWidget->item(ii,0);if (item){int team = item->data(Qt::EditRole).toInt();if ( team > 0 && team <= config.max_team ){g_record( team, &team_buf );// Nameitem = ui->tableWidget->item(ii,1);if (item){strncpy(team_buf.name , qPrintable(item->data(Qt::EditRole).toString()), sizeof(team_buf.name));}// Categoryitem = ui->tableWidget->item(ii,2);if (item){int category = lookup_class(qPrintable(item->data(Qt::EditRole).toString()), &config );if (category){team_buf.teamclass = category;}}// Team member names and agesint member = 0;for (int yy = 3; yy < ui->tableWidget->colorCount(); yy+= 2, member++){item = ui->tableWidget->item(ii,yy);if (item){strncpy(team_buf.members[member].name , qPrintable(item->data(Qt::EditRole).toString()), sizeof(team_buf.members[member].name));}item = ui->tableWidget->item(ii,1+yy);if (item){int age = item->data(Qt::EditRole).toInt();if (age){team_buf.members[member].age = age;}}}put_team_record( team, &team_buf );}}}}