Subversion Repositories svn1

Rev

Rev 145 | Rev 147 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
144 - 1
#include "qmdialogloadexternalteams.h"
2
#include "ui_qmdialogloadexternalteams.h"
145 - 3
#include "QFile"
4
#include "QTextStream"
5
#include "mainwindow.h"
6
#include <QRegExp>
144 - 7
 
145 - 8
#include    "consts.h"
9
#include    "structs.h"
10
#include    "proto.h"
11
 
12
QmDialogLoadExternalTeams::QmDialogLoadExternalTeams(const QString &efile,QWidget *parent) :
144 - 13
    QDialog(parent),
14
    ui(new Ui::QmDialogLoadExternalTeams)
15
{
16
    ui->setupUi(this);
145 - 17
    setWindowTitle("Load External Team Data");
18
    ui->fileName->setText(efile);
19
 
20
    // Open the users file
21
 
22
    QFile file(efile);
23
    if ( ! file.open(QIODevice::ReadOnly | QIODevice::Text) )
24
    {
25
        MainWindow::showMessage("Cannot open external data file");
26
        return;
27
    }
28
 
29
    ui->tableWidget->setColumnCount(3 + ( 2 * config.num_legs) );
30
 
31
 
32
    // Process Each line of the file
33
    QTextStream in(&file);
34
    int ii = 0;
35
    QRegExp csv_split("\"?,\"?");
36
    while (!in.atEnd())
37
    {
38
         QString line = in.readLine();
39
         line = line.trimmed();             // Remove leading and training White Space
40
         line.remove(0xA0);                 // M$ special uglyness
41
 
42
         QStringList parts = line.split(csv_split);
43
         QString first = parts.value(0);
44
         bool ok;
45
         if ( first.isEmpty() )
46
             continue;
47
         int team = first.toInt(&ok);
48
         if ( ! ok || team <= 0 )
49
             continue;
50
         ui->tableWidget->setRowCount(1+ii);
51
 
52
         // Insert Team number
53
         ui->tableWidget->setItem(ii, 0, new QTableWidgetItem(first));
54
         parts.removeFirst();
55
 
56
         // Extract Team Name
57
         ui->tableWidget->setItem(ii, 1, new QTableWidgetItem( parts.value(0) ) );
58
         parts.removeFirst();
59
 
60
         // Extract Team Cat
61
         ui->tableWidget->setItem(ii, 2, new QTableWidgetItem( parts.value(0)));
62
         parts.removeFirst();
63
 
64
         int yy = 0;
65
         while ( parts.count() > 0)
66
         {
67
             // Name of competitor
68
             ui->tableWidget->setItem(ii, 3+yy, new QTableWidgetItem( parts.value(0)));
69
             parts.removeFirst();
70
 
71
             // Posible age - if its a number
72
             int age = parts.value(0).toInt(&ok);
73
             if ( ok && age > 0 )
74
             {
75
                 ui->tableWidget->setItem(ii, 4+yy, new QTableWidgetItem( parts.value(0)));
76
                 parts.removeFirst();
77
             }
78
             yy += 2;
79
         }
80
         ii++;
146 david 81
     }
145 - 82
 
146 david 83
    // Connect up buttons
145 - 84
 
146 david 85
    connect (ui->buttonBox, SIGNAL(accepted()), this, SLOT(loadData()));
144 - 86
}
87
 
88
QmDialogLoadExternalTeams::~QmDialogLoadExternalTeams()
89
{
90
    delete ui;
91
}
146 david 92
 
93
void QmDialogLoadExternalTeams::loadData(void)
94
{
95
    qDebug ("LoadData");
96
    team_type team_buf;
97
    for ( int ii = 0; ii < ui->tableWidget->rowCount(); ii++)
98
    {
99
        QTableWidgetItem *item;
100
        item = ui->tableWidget->item(ii,0);
101
        if (item)
102
        {
103
            int team = item->data(Qt::EditRole).toInt();
104
            if ( team > 0 && team <= config.max_team )
105
            {
106
                g_record( team, &team_buf );
107
 
108
                // Name
109
                item = ui->tableWidget->item(ii,1);
110
                if (item)
111
                {
112
                    strncpy(team_buf.name , qPrintable(item->data(Qt::EditRole).toString()), sizeof(team_buf.name));
113
                }
114
 
115
                // Category
116
                item = ui->tableWidget->item(ii,2);
117
                if (item)
118
                {
119
                    int category = lookup_class(qPrintable(item->data(Qt::EditRole).toString()), &config );
120
                    if (category)
121
                    {
122
                        team_buf.teamclass = category;
123
                    }
124
                }
125
 
126
                // Team member names and ages
127
                int member = 0;
128
                for (int yy = 3; yy < ui->tableWidget->colorCount(); yy+= 2, member++)
129
                {
130
                    item = ui->tableWidget->item(ii,yy);
131
                    if (item)
132
                    {
133
                        strncpy(team_buf.members[member].name , qPrintable(item->data(Qt::EditRole).toString()), sizeof(team_buf.members[member].name));
134
                    }
135
                    item = ui->tableWidget->item(ii,1+yy);
136
                    if (item)
137
                    {
138
                        int age = item->data(Qt::EditRole).toInt();
139
                        if (age)
140
                        {
141
                            team_buf.members[member].age = age;
142
                        }
143
                    }
144
                }
145
 
146
                put_team_record( team, &team_buf );
147
            }
148
        }
149
    }
150
}