Rev 158 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "qmdialoguploadlegtimes.h"#include "ui_qmdialoguploadlegtimes.h"#include "QTableWidgetItem"#include "QFile"#include "QString"#include "QFileDialog"#include "mainwindow.h"#include "QTextStream"#include "timedelegate.h"#include "consts.h"#include "structs.h"#include "proto.h"QmDialogUploadLegTimes::QmDialogUploadLegTimes(QWidget *parent) :QDialog(parent),ui(new Ui::QmDialogUploadLegTimes){ui->setupUi(this);ui->legNumber->setMaximum(config.num_legs);// Connect up buttonsconnect(ui->load, SIGNAL(clicked()), this, SLOT(load()));connect(ui->cancel,SIGNAL(clicked()), this, SLOT(close()));// Set up the tableui->tableWidget->setColumnCount(5);QStringList labels;labels << "Team" << "Time" << "Time" << "Time" << "Time";ui->tableWidget->setHorizontalHeaderLabels(labels);ui->tableWidget->setItemDelegateForColumn(1, new timeDelegate());ui->tableWidget->setItemDelegateForColumn(2, new timeDelegate());ui->tableWidget->setItemDelegateForColumn(3, new timeDelegate());ui->tableWidget->setItemDelegateForColumn(4, new timeDelegate());}QmDialogUploadLegTimes::~QmDialogUploadLegTimes(){delete ui;}void QmDialogUploadLegTimes::load(void){QString fileName = QFileDialog::getOpenFileName(this, tr("Load File"),QDir::currentPath(),tr("Data (*.leg);;All (*.*)"),0,QFileDialog::ReadOnly);if ( fileName.isEmpty() ){MainWindow::showMessage("No File Specified");return;}// Open the fileQFile file(fileName);if ( ! file.open(QIODevice::ReadOnly | QIODevice::Text) ){MainWindow::showMessage("Cannot open Leg Data file");return;}MainWindow::showMessage("Loading Leg Data");// Insert column headersui->tableWidget->clearContents();ui->tableWidget->setRowCount(0);// Process Each line of the file// Format is TeamNumber TimeQTextStream in(&file);while (!in.atEnd()){QString line = in.readLine();line = line.trimmed(); // Remove leading and training White SpaceQStringList parts = line.split(" ");QString first = parts.value(0);bool ok;int team = first.toInt(&ok);if ( ! ok || team <= 0 )continue;if (team > ui->tableWidget->rowCount()){ui->tableWidget->setRowCount(team);}QTableWidgetItem *item = ui->tableWidget->item(team-1,0);if (!item){item = new QTableWidgetItem(QString::number(team));item->setFlags(item->flags() & ~(Qt::ItemIsEditable|Qt::ItemIsDragEnabled|Qt::ItemIsDropEnabled));ui->tableWidget->setItem(team-1,0,item);}// Insert the time at the first available slotint ii;QTableWidgetItem *titem = NULL;for (ii=1 ; ii < ui->tableWidget->columnCount(); ii++){titem = ui->tableWidget->item(team-1,ii);if (! titem){break;}}titem = new QTableWidgetItem(parts.value(1));ui->tableWidget->setItem(team-1,ii,titem);}}