Subversion Repositories svn1-original

Rev

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 buttons
    connect(ui->load, SIGNAL(clicked()), this, SLOT(load()));
    connect(ui->cancel,SIGNAL(clicked()), this, SLOT(close()));


    // Set up the table
     ui->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 file

    QFile file(fileName);
    if ( ! file.open(QIODevice::ReadOnly | QIODevice::Text) )
    {
        MainWindow::showMessage("Cannot open Leg Data file");
        return;
    }
    MainWindow::showMessage("Loading Leg Data");
    // Insert column headers
    ui->tableWidget->clearContents();
    ui->tableWidget->setRowCount(0);


    // Process Each line of the file
    //  Format is TeamNumber Time
    QTextStream in(&file);
    while (!in.atEnd())
    {
        QString line = in.readLine();
        line = line.trimmed();             // Remove leading and training White Space
        QStringList 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 slot
        int 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);

    }

}