Subversion Repositories svn1-original

Rev

Rev 180 | Rev 227 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 180 Rev 225
Line 2... Line 2...
2
#include "ui_qmdialogloadexternalteams.h"
2
#include "ui_qmdialogloadexternalteams.h"
3
#include "QFile"
3
#include "QFile"
4
#include "QTextStream"
4
#include "QTextStream"
5
#include "mainwindow.h"
5
#include "mainwindow.h"
6
#include <QRegExp>
6
#include <QRegExp>
-
 
7
#include <QtGui/QHBoxLayout>
-
 
8
#include <QtGui/QVBoxLayout>
-
 
9
#include <QtGui/QWidget>
7
 
10
 
8
#include    "consts.h"
11
#include    "consts.h"
9
#include    "structs.h"
12
#include    "structs.h"
10
#include    "proto.h"
13
#include    "proto.h"
11
 
14
 
12
QmDialogLoadExternalTeams::QmDialogLoadExternalTeams(const QString &efile,QWidget *parent) :
15
QmDialogLoadExternalTeams::QmDialogLoadExternalTeams(const QString &efile,QWidget *parent) :
13
    QDialog(parent),
16
    QDialog(parent)
14
    ui(new Ui::QmDialogLoadExternalTeams)
17
    {
15
{
18
 
-
 
19
    //
-
 
20
    // Create Windows
-
 
21
    //
16
    ui->setupUi(this);
22
    resize(550, 500);
-
 
23
    setSizeGripEnabled(true);
17
    setWindowTitle("Load External Team Data");
24
    setWindowTitle("Load External Team Data");
-
 
25
 
-
 
26
    QVBoxLayout *verticalLayout;
-
 
27
    verticalLayout = new QVBoxLayout(this);
-
 
28
    verticalLayout->setContentsMargins(0, 0, 0, 0);
-
 
29
 
-
 
30
    QHBoxLayout *horizontalLayout;
-
 
31
    horizontalLayout = new QHBoxLayout();
-
 
32
 
-
 
33
    groupBox = new QGroupBox(this);
-
 
34
    groupBox->setTitle("Data");
-
 
35
    //groupBox->setGeometry(QRect(10, 0, 531, 451));
-
 
36
     verticalLayout->addWidget(groupBox);
-
 
37
 
-
 
38
     tableWidget = new QTableWidget(groupBox);
-
 
39
     tableWidget->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
-
 
40
     tableWidget->setGeometry(QRect(15, 21, 501, 421));
-
 
41
     tableWidget->setCornerButtonEnabled(false);
-
 
42
     tableWidget->verticalHeader()->setVisible(false);
-
 
43
     tableWidget->verticalHeader()->setDefaultSectionSize(20);
-
 
44
     tableWidget->verticalHeader()->setHighlightSections(true);
-
 
45
 
-
 
46
    fileName = new QLineEdit(this);
-
 
47
    fileName->setObjectName(QString::fromUtf8("fileName"));
-
 
48
    fileName->setGeometry(QRect(20, 470, 331, 20));
-
 
49
    fileName->setReadOnly(true);
18
    ui->fileName->setText(efile);
50
    fileName->setText(efile);
-
 
51
    horizontalLayout->addWidget(fileName);
-
 
52
 
-
 
53
 
-
 
54
 
-
 
55
    load = new QPushButton(this);
-
 
56
    load->setObjectName(QString::fromUtf8("load"));
-
 
57
    load->setGeometry(QRect(370, 470, 75, 23));
-
 
58
    load->setText("Load");
-
 
59
    horizontalLayout->addWidget(load);
-
 
60
 
-
 
61
    cancel = new QPushButton(this);
-
 
62
    cancel->setObjectName(QString::fromUtf8("cancel"));
-
 
63
    cancel->setGeometry(QRect(460, 470, 75, 23));
-
 
64
    cancel->setAutoDefault(false);
-
 
65
    cancel->setText("Cancel");
-
 
66
    horizontalLayout->addWidget(cancel);
-
 
67
 
-
 
68
    verticalLayout->addLayout(horizontalLayout);
-
 
69
 
19
 
70
 
20
    // Open the users file
71
    // Open the users file
21
 
72
 
22
    QFile file(efile);
73
    QFile file(efile);
23
    if ( ! file.open(QIODevice::ReadOnly | QIODevice::Text) )
74
    if ( ! file.open(QIODevice::ReadOnly | QIODevice::Text) )
Line 26... Line 77...
26
        return;
77
        return;
27
    }
78
    }
28
    MainWindow::showMessage("Loading External Data");
79
    MainWindow::showMessage("Loading External Data");
29
 
80
 
30
    // Insert column headers
81
    // Insert column headers
31
    ui->tableWidget->setColumnCount(3 + ( 2 * config.num_legs) );
82
    tableWidget->setColumnCount(3 + ( 2 * config.num_legs) );
32
    QStringList labels;
83
    QStringList labels;
33
    labels << "Team" << "Team Name" << "Cat";
84
    labels << "Team" << "Team Name" << "Cat";
34
    for (int ii = 1; ii <= config.num_legs; ii++ )
85
    for (int ii = 1; ii <= config.num_legs; ii++ )
35
    {
86
    {
36
        labels += QString("Leg:%1").arg(QString::number(ii));
87
        labels += QString("Leg:%1").arg(QString::number(ii));
37
        labels += QString("Age:%1").arg(QString::number(ii));
88
        labels += QString("Age:%1").arg(QString::number(ii));
38
    }
89
    }
39
    ui->tableWidget->setHorizontalHeaderLabels(labels);
90
    tableWidget->setHorizontalHeaderLabels(labels);
40
 
91
 
41
    // Process Each line of the file
92
    // Process Each line of the file
42
    QTextStream in(&file);
93
    QTextStream in(&file);
43
    int ii = 0;
94
    int ii = 0;
44
    int bad_cat = 0;
95
    int bad_cat = 0;
Line 55... Line 106...
55
         if ( first.isEmpty() )
106
         if ( first.isEmpty() )
56
             continue;
107
             continue;
57
         int team = first.toInt(&ok);
108
         int team = first.toInt(&ok);
58
         if ( ! ok || team <= 0 )
109
         if ( ! ok || team <= 0 )
59
             continue;
110
             continue;
60
         ui->tableWidget->setRowCount(1+ii);
111
         tableWidget->setRowCount(1+ii);
61
 
112
 
62
         // Insert Team number
113
         // Insert Team number
63
         ui->tableWidget->setItem(ii, 0, new QTableWidgetItem(first));
114
         tableWidget->setItem(ii, 0, new QTableWidgetItem(first));
64
         parts.removeFirst();
115
         parts.removeFirst();
65
 
116
 
66
         // Extract Team Name
117
         // Extract Team Name
67
         ui->tableWidget->setItem(ii, 1, new QTableWidgetItem( parts.value(0) ) );
118
         tableWidget->setItem(ii, 1, new QTableWidgetItem( parts.value(0) ) );
68
         parts.removeFirst();
119
         parts.removeFirst();
69
 
120
 
70
         // Extract Team Cat
121
         // Extract Team Cat
71
         QTableWidgetItem *item = new QTableWidgetItem( parts.value(0)) ;
122
         QTableWidgetItem *item = new QTableWidgetItem( parts.value(0)) ;
72
         ui->tableWidget->setItem(ii, 2, item );
123
         tableWidget->setItem(ii, 2, item );
73
 
124
 
74
        if (config.lookup_class(qPrintable(parts.value(0)) ) <= 0 )
125
        if (config.lookup_class(qPrintable(parts.value(0)) ) <= 0 )
75
        {
126
        {
76
            item->setBackgroundColor(QColor(200,0,0,50));
127
            item->setBackgroundColor(QColor(200,0,0,50));
77
            bad_cat++;
128
            bad_cat++;
Line 80... Line 131...
80
 
131
 
81
         int yy = 0;
132
         int yy = 0;
82
         while ( parts.count() > 0)
133
         while ( parts.count() > 0)
83
         {
134
         {
84
             // Name of competitor
135
             // Name of competitor
85
             ui->tableWidget->setItem(ii, 3+yy, new QTableWidgetItem( parts.value(0)));
136
             tableWidget->setItem(ii, 3+yy, new QTableWidgetItem( parts.value(0)));
86
             parts.removeFirst();
137
             parts.removeFirst();
87
 
138
 
88
             // Posible age - if its a number
139
             // Posible age - if its a number
89
             int age = parts.value(0).toInt(&ok);
140
             int age = parts.value(0).toInt(&ok);
90
             if ( ok )
141
             if ( ok )
91
             {
142
             {
92
                 if ( age > 0 )
143
                 if ( age > 0 )
93
                 {
144
                 {
94
                     ui->tableWidget->setItem(ii, 4+yy, new QTableWidgetItem( parts.value(0)));
145
                     tableWidget->setItem(ii, 4+yy, new QTableWidgetItem( parts.value(0)));
95
                 }
146
                 }
96
                 parts.removeFirst();
147
                 parts.removeFirst();
97
             }
148
             }
98
             yy += 2;
149
             yy += 2;
99
         }
150
         }
100
         ii++;
151
         ii++;
101
     }
152
     }
102
    ui->tableWidget->resizeColumnsToContents();
153
    tableWidget->resizeColumnsToContents();
103
 
154
 
104
    // Report errors
155
    // Report errors
105
    if (bad_cat)
156
    if (bad_cat)
106
    {
157
    {
107
        MainWindow::showMessage("Invalid Categories in data");
158
        MainWindow::showMessage("Invalid Categories in data");
108
    }
159
    }
109
 
160
 
110
    // Connect up buttons
161
    // Connect up buttons
111
 
162
 
112
    connect (ui->load, SIGNAL(clicked()), this, SLOT(loadData()));
163
    connect (load, SIGNAL(clicked()), this, SLOT(loadData()));
-
 
164
    connect(cancel, SIGNAL(clicked()), this, SLOT(close()));
113
}
165
}
114
 
166
 
115
QmDialogLoadExternalTeams::~QmDialogLoadExternalTeams()
167
QmDialogLoadExternalTeams::~QmDialogLoadExternalTeams()
116
{
168
{
117
    delete ui;
169
 
118
}
170
}
119
 
171
 
120
void QmDialogLoadExternalTeams::loadData(void)
172
void QmDialogLoadExternalTeams::loadData(void)
121
{
173
{
122
    qDebug ("LoadData");
174
    qDebug ("LoadData");
123
    team_type team_buf;
175
    team_type team_buf;
124
    int bad_cat = 0;
176
    int bad_cat = 0;
125
    for ( int ii = 0; ii < ui->tableWidget->rowCount(); ii++)
177
    for ( int ii = 0; ii < tableWidget->rowCount(); ii++)
126
    {
178
    {
127
        if ( ui->tableWidget->isRowHidden(ii))
179
        if ( tableWidget->isRowHidden(ii))
128
        {
180
        {
129
            continue;
181
            continue;
130
        }
182
        }
131
        bool bad = false;
183
        bool bad = false;
132
        QTableWidgetItem *item;
184
        QTableWidgetItem *item;
133
        item = ui->tableWidget->item(ii,0);
185
        item = tableWidget->item(ii,0);
134
        if (item)
186
        if (item)
135
        {
187
        {
136
            int team = item->data(Qt::EditRole).toInt();
188
            int team = item->data(Qt::EditRole).toInt();
137
            if ( team > 0 && team <= config.max_team )
189
            if ( team > 0 && team <= config.max_team )
138
            {
190
            {
139
                g_record( team, &team_buf );
191
                g_record( team, &team_buf );
140
 
192
 
141
                // Name
193
                // Name
142
                item = ui->tableWidget->item(ii,1);
194
                item = tableWidget->item(ii,1);
143
                if (item)
195
                if (item)
144
                {
196
                {
145
                    strncpy(team_buf.name , qPrintable(item->data(Qt::EditRole).toString()), sizeof(team_buf.name));
197
                    strncpy(team_buf.name , qPrintable(item->data(Qt::EditRole).toString()), sizeof(team_buf.name));
146
                }
198
                }
147
 
199
 
148
                // Category
200
                // Category
149
                item = ui->tableWidget->item(ii,2);
201
                item = tableWidget->item(ii,2);
150
                if (item)
202
                if (item)
151
                {
203
                {
152
                    int category = config.lookup_class(qPrintable(item->data(Qt::EditRole).toString()) );
204
                    int category = config.lookup_class(qPrintable(item->data(Qt::EditRole).toString()) );
153
                    if (category)
205
                    if (category)
154
                    {
206
                    {
Line 161... Line 213...
161
                    }
213
                    }
162
                }
214
                }
163
 
215
 
164
                // Team member names and ages
216
                // Team member names and ages
165
                int member = 0;
217
                int member = 0;
166
                for (int yy = 3; yy < ui->tableWidget->columnCount(); yy+= 2, member++)
218
                for (int yy = 3; yy < tableWidget->columnCount(); yy+= 2, member++)
167
                {
219
                {
168
                    if (member > config.num_legs)
220
                    if (member > config.num_legs)
169
                    {
221
                    {
170
                        break;
222
                        break;
171
                    }
223
                    }
172
                    item = ui->tableWidget->item(ii,yy);
224
                    item = tableWidget->item(ii,yy);
173
                    if (item)
225
                    if (item)
174
                    {
226
                    {
175
                        strncpy(team_buf.members[member].name , qPrintable(item->data(Qt::EditRole).toString()), sizeof(team_buf.members[member].name));
227
                        strncpy(team_buf.members[member].name , qPrintable(item->data(Qt::EditRole).toString()), sizeof(team_buf.members[member].name));
176
                    }
228
                    }
177
                    item = ui->tableWidget->item(ii,1+yy);
229
                    item = tableWidget->item(ii,1+yy);
178
                    if (item)
230
                    if (item)
179
                    {
231
                    {
180
                        int age = item->data(Qt::EditRole).toInt();
232
                        int age = item->data(Qt::EditRole).toInt();
181
                        if (age)
233
                        if (age)
182
                        {
234
                        {
Line 196... Line 248...
196
        {
248
        {
197
            bad = true;
249
            bad = true;
198
        }
250
        }
199
        if (!bad)
251
        if (!bad)
200
        {
252
        {
201
            ui->tableWidget->hideRow(ii);
253
            tableWidget->hideRow(ii);
202
        }
254
        }
203
    }
255
    }
204
 
256
 
205
    // Report errors
257
    // Report errors
206
    if (bad_cat)
258
    if (bad_cat)