Subversion Repositories svn1

Rev

Rev 187 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 187 Rev 380
Line 1... Line 1...
1
#include "qmdialoguploadlegtimes.h"
1
#include "qmdialoguploadlegtimes.h"
2
#include "ui_qmdialoguploadlegtimes.h"
2
#include "qmdialoguploadlegtimes_ui.cpp"
3
#include "QTableWidgetItem"
3
#include "QTableWidgetItem"
4
#include "QFile"
4
#include "QFile"
5
#include "QString"
5
#include "QString"
6
#include "QFileDialog"
6
#include "QFileDialog"
-
 
7
#include "QClipboard"
-
 
8
#include "QRegExp"
7
#include "mainwindow.h"
9
#include "mainwindow.h"
8
#include "QTextStream"
10
#include "QTextStream"
9
#include "timedelegate.h"
11
#include "timedelegate.h"
-
 
12
#include "qmconfig.h"
10
 
13
 
11
#include    "consts.h"
14
#include    "consts.h"
12
#include    "structs.h"
15
#include    "structs.h"
13
#include    "proto.h"
16
#include    "proto.h"
14
 
17
 
15
QmDialogUploadLegTimes::QmDialogUploadLegTimes(QWidget *parent) :
18
QmDialogUploadLegTimes::QmDialogUploadLegTimes(QWidget *parent) :
16
    QDialog(parent),
19
    QDialog(parent),
17
    ui(new Ui::QmDialogUploadLegTimes)
20
    ui(new Ui::QmDialogUploadLegTimes)
18
{
21
{
19
    ui->setupUi(this);
22
    ui->setupUi(this);
-
 
23
    setSizeGripEnabled(true);
20
    ui->legNumber->setMaximum(config.num_legs);
24
    ui->legNumber->setMaximum(config.num_legs);
21
 
25
 
22
    // Connect up buttons
26
    // Connect up buttons
23
    connect(ui->load, SIGNAL(clicked()), this, SLOT(load()));
27
    connect(ui->load, SIGNAL(clicked()), this, SLOT(load()));
-
 
28
    connect(ui->fromClip, SIGNAL(clicked()), this, SLOT(fromClip()));
-
 
29
    connect(ui->fromEvent, SIGNAL(clicked()), this, SLOT(fromEvent()));
-
 
30
    connect(ui->clear, SIGNAL(clicked()), this, SLOT(clear()));
24
    connect(ui->cancel,SIGNAL(clicked()), this, SLOT(close()));
31
    connect(ui->cancel,SIGNAL(clicked()), this, SLOT(close()));
25
    connect(ui->update,SIGNAL(clicked()), this, SLOT(update()));
32
    connect(ui->update,SIGNAL(clicked()), this, SLOT(update()));
26
    connect(ui->deltaTime, SIGNAL(valueChanged(int)), this, SLOT(updateDeltaDisplay()));
33
    connect(ui->deltaTime, SIGNAL(timeChanged(QTime)), this, SLOT(updateDeltaDisplay()));
27
    connect(ui->hideOk, SIGNAL(clicked()), this, SLOT(updateDeltaDisplay()));
34
    connect(ui->hideOk, SIGNAL(clicked()), this, SLOT(updateDeltaDisplay()));
-
 
35
    connect(ui->legNumber, SIGNAL(valueChanged(int)), this, SLOT(legNumberChanged(int)));
28
 
36
 
29
 
37
 
30
    // Set up the table
38
    // Set up the table
-
 
39
    // First column is not a 'time' column
31
     ui->tableWidget->setColumnCount(6);
40
    ui->tableWidget->setColumnCount(1);
32
 
-
 
-
 
41
    ui->tableWidget->setHorizontalHeaderItem ( 0, new QTableWidgetItem ("Team"));
33
     QStringList labels;
42
    addColumn("Delta");
34
     labels << "Team" << "Delta" << "Use" << "Time" << "Time" << "Time";
43
    addColumn("Used");
35
     ui->tableWidget->setHorizontalHeaderLabels(labels);
44
    addColumn("Time");
36
 
45
 
37
     ui->tableWidget->setItemDelegateForColumn(1, new timeDelegate());
-
 
38
     ui->tableWidget->setItemDelegateForColumn(2, new timeDelegate());
-
 
39
     ui->tableWidget->setItemDelegateForColumn(3, new timeDelegate());
-
 
40
     ui->tableWidget->setItemDelegateForColumn(4, new timeDelegate());
-
 
41
     ui->tableWidget->setItemDelegateForColumn(5, new timeDelegate());
46
    // Wire up the table
42
     connect(ui->tableWidget,SIGNAL(itemDoubleClicked (QTableWidgetItem*)), this,SLOT(itemActivated(QTableWidgetItem*)));
47
    connect(ui->tableWidget,SIGNAL(itemDoubleClicked (QTableWidgetItem*)), this,SLOT(itemActivated(QTableWidgetItem*)));
43
 
48
 
-
 
49
    // Init status
44
     ui->status->setText("Load Leg File");
50
    ui->status->setText("Load Leg File");
-
 
51
    legNumberChanged(0);
45
}
52
}
46
 
53
 
47
QmDialogUploadLegTimes::~QmDialogUploadLegTimes()
54
QmDialogUploadLegTimes::~QmDialogUploadLegTimes()
48
{
55
{
49
    delete ui;
56
    delete ui;
50
}
57
}
51
 
58
 
-
 
59
void QmDialogUploadLegTimes::addColumn(QString hdr)
-
 
60
{
-
 
61
    int col = ui->tableWidget->columnCount();
-
 
62
    ui->tableWidget->insertColumn(col);
-
 
63
 
-
 
64
    // Insert header
-
 
65
    ui->tableWidget->setHorizontalHeaderItem ( col, new QTableWidgetItem (hdr));
-
 
66
 
-
 
67
    // Insert Time Delegate
-
 
68
    ui->tableWidget->setItemDelegateForColumn(col, new timeDelegate());
-
 
69
}
-
 
70
 
-
 
71
void QmDialogUploadLegTimes::clear(void)
-
 
72
{
-
 
73
    ui->tableWidget->clearContents();
-
 
74
    ui->tableWidget->setRowCount(0);
-
 
75
 
-
 
76
    // Update Error information
-
 
77
    updateDeltaDisplay();
-
 
78
}
-
 
79
 
-
 
80
void QmDialogUploadLegTimes::fromEvent(void)
-
 
81
{
-
 
82
    team_type   team_buf;
-
 
83
 
-
 
84
    /* Determine the leg to load - from other dialog */
-
 
85
    int leg = ui->legNumber->value() ;
-
 
86
    if (leg <= 0 || leg > config.num_legs)
-
 
87
    {
-
 
88
        ui->status->setText("Must select leg number");
-
 
89
        return;
-
 
90
    }
-
 
91
 
-
 
92
    ui->status->setText("Load existing data from leg:" + QString::number(leg));
-
 
93
    for( int i = config.min_team; i <= config.max_team; i++ )
-
 
94
    {
-
 
95
        if( valid_field( i ) && g_record( i, &team_buf ) )
-
 
96
        {
-
 
97
            int secs;
-
 
98
            if ( ui->legStart->isChecked()) {
-
 
99
                secs = team_buf.leg[leg].start;
-
 
100
            } else {
-
 
101
                secs = team_buf.leg[leg].end;
-
 
102
            }
-
 
103
 
-
 
104
            QTime data = QTime().addSecs(secs);
-
 
105
            //qDebug() << "Team:"<< i << " Time:" << data.toString("hh:mm:ss");
-
 
106
            addDataToTable(i, data, true);
-
 
107
        }
-
 
108
    }
-
 
109
 
-
 
110
    // Update Error information
-
 
111
    updateDeltaDisplay();
-
 
112
}
-
 
113
 
-
 
114
void QmDialogUploadLegTimes::fromClip(void)
-
 
115
{
-
 
116
    QClipboard *clipboard = QApplication::clipboard();
-
 
117
    QString text = clipboard->text();
-
 
118
    if (text.length() > 0) {
-
 
119
        QStringList list = text.split(QRegExp("[\\r\\n]"));
-
 
120
 
-
 
121
        ui->status->setText("Loading Data");
-
 
122
        for (int i = 0; i < list.size(); ++i)
-
 
123
        {
-
 
124
            processOneLine(list.at(i));
-
 
125
        }
-
 
126
 
-
 
127
        // Update Error information
-
 
128
        updateDeltaDisplay();
-
 
129
    }
-
 
130
}
-
 
131
 
-
 
132
void QmDialogUploadLegTimes::processOneLine(QString line)
-
 
133
{
-
 
134
    QStringList parts;
-
 
135
    line = line.trimmed();             // Remove leading and training White Space
-
 
136
    if (line.size() <= 0)
-
 
137
        return;
-
 
138
 
-
 
139
    //  An array of possible imput parsers
-
 
140
    //
-
 
141
    QRegExp lineFormats[] = {
-
 
142
        QRegExp ("^(\\d+)\\s+(\\d+:\\d+:\\d+)$"),                           // 022 12:13:14
-
 
143
        QRegExp ("^(\\d+)\\s*,\\s*(\\d+:\\d+:\\d+)$"),                      // 022,12:13:14
-
 
144
        QRegExp ("^(\\d+)\\s+\\d+-\\d+-\\d+\\s+(\\d+:\\d+:\\d+)\\.\\d+$"),  // 022 2019-08-01 12:13:14.123
-
 
145
        QRegExp ("^\\d+,(\\d+),(\\d+:\\d+:\\d+)$"),                         // 001,022,12:13:14
-
 
146
        QRegExp ("^\\d+,(\\d+),\\d+,\"(\\d+:\\d+:\\d+)\\.\\d+\"$"),         // 2,22,0,"09:40:09.612"
-
 
147
    };
-
 
148
 
-
 
149
    for( unsigned int idx = 0 ; idx <(sizeof(lineFormats)/sizeof(*lineFormats)); idx++ )
-
 
150
    {
-
 
151
        if(lineFormats[idx].indexIn(line) == 0)
-
 
152
        {
-
 
153
            parts = lineFormats[idx].capturedTexts();
-
 
154
        }
-
 
155
    }
-
 
156
 
-
 
157
    if ( parts.empty())
-
 
158
    {
-
 
159
        qDebug("Funny Line regex: %s", qPrintable(line));
-
 
160
        return;
-
 
161
    }
-
 
162
 
-
 
163
    QString first = parts.value(1);
-
 
164
    if ( parts.count() != 3)
-
 
165
    {
-
 
166
        qDebug("Funny Line parts: %s", qPrintable(line));
-
 
167
        return;
-
 
168
    }
-
 
169
 
-
 
170
    bool ok;
-
 
171
    int team = first.toInt(&ok);
-
 
172
    if ( ! ok || team <= 0 || team > 999 )
-
 
173
    {
-
 
174
        qDebug("Bad Team Number: %s", qPrintable(line));
-
 
175
        return;
-
 
176
    }
-
 
177
 
-
 
178
    addDataToTable(team, QTime::fromString(parts.value(2),"hh:mm:ss"), false);
-
 
179
}
-
 
180
 
-
 
181
void QmDialogUploadLegTimes::addDataToTable(int team, QTime ltime, bool isYellow)
-
 
182
{
-
 
183
    if ( team <= 0 || team > 999 )
-
 
184
    {
-
 
185
        //qDebug("Team Number out of range: %s", qPrintable(line));
-
 
186
        return;
-
 
187
    }
-
 
188
 
-
 
189
    if (team > ui->tableWidget->rowCount())
-
 
190
    {
-
 
191
        ui->tableWidget->setRowCount(team);
-
 
192
    }
-
 
193
 
-
 
194
    QTableWidgetItem *item = ui->tableWidget->item(team-1,0);
-
 
195
    if (!item)
-
 
196
    {
-
 
197
        item = new QTableWidgetItem(QString::number(team));
-
 
198
        item->setFlags(item->flags() & ~(Qt::ItemIsEditable|Qt::ItemIsDragEnabled|Qt::ItemIsDropEnabled));
-
 
199
        ui->tableWidget->setItem(team-1,0,item);
-
 
200
        item->setData(Qt::ToolTipRole,"Team Number");
-
 
201
 
-
 
202
        item = new QTableWidgetItem("");
-
 
203
        item->setFlags(item->flags() & ~(Qt::ItemIsEditable|Qt::ItemIsDragEnabled|Qt::ItemIsDropEnabled));
-
 
204
        ui->tableWidget->setItem(team-1,1,item);
-
 
205
        item->setData(Qt::ToolTipRole,"Max delta");
-
 
206
 
-
 
207
        item = new QTableWidgetItem("");
-
 
208
        item->setFlags(item->flags() & ~(Qt::ItemIsDragEnabled|Qt::ItemIsDropEnabled));
-
 
209
        ui->tableWidget->setItem(team-1,2,item);
-
 
210
        item->setData(Qt::ToolTipRole,"Use this data");
-
 
211
    }
-
 
212
 
-
 
213
    //  Insert the time at the first available slot
-
 
214
    //  Scan for max an min as we go
-
 
215
    int ii;
-
 
216
    QTableWidgetItem *titem = NULL;
-
 
217
    //QTime ltime = QTime::fromString(parts.value(2),"hh:mm:ss");
-
 
218
    unsigned int lsecs = QTime(0,0,0).secsTo(ltime);
-
 
219
    if ( lsecs <= 0)
-
 
220
    {
-
 
221
        //qDebug("Funny Line: %s", qPrintable(line));
-
 
222
        return;
-
 
223
    }
-
 
224
    //qDebug("Tead: %d, Secs: %d", team, lsecs );
-
 
225
    unsigned int min_time = lsecs;
-
 
226
    unsigned int max_time = lsecs;
-
 
227
    bool empty_cell_found = false;
-
 
228
 
-
 
229
    for (ii=3 ; ii <= ui->tableWidget->columnCount() - 1; ii++)
-
 
230
    {
-
 
231
        titem = ui->tableWidget->item(team-1,ii);
-
 
232
        if (! titem)
-
 
233
        {
-
 
234
            // Empty cell found
-
 
235
            empty_cell_found = true;
-
 
236
            break;
-
 
237
        }
-
 
238
 
-
 
239
        QTime entry = titem->data(Qt::EditRole).toTime();
-
 
240
        unsigned int secs = QTime(0,0,0).secsTo(entry);
-
 
241
        if ( secs < min_time )
-
 
242
            min_time = secs;
-
 
243
        if (secs > max_time)
-
 
244
            max_time = secs;
-
 
245
    }
-
 
246
 
-
 
247
    // No space found for the data - add a new column
-
 
248
    if ( ! empty_cell_found )
-
 
249
    {
-
 
250
        addColumn("Time");
-
 
251
        ii = ui->tableWidget->columnCount() - 1;
-
 
252
    }
-
 
253
 
-
 
254
    // Insert data into cell
-
 
255
    titem = new QTableWidgetItem();
-
 
256
    titem->setData(Qt::EditRole, ltime);
-
 
257
    titem->setFlags(titem->flags() & ~(Qt::ItemIsEditable|Qt::ItemIsDragEnabled|Qt::ItemIsDropEnabled));
-
 
258
    ui->tableWidget->setItem(team-1,ii,titem);
-
 
259
 
-
 
260
    //  Color if needed
-
 
261
    if (isYellow)
-
 
262
        titem->setBackgroundColor(QColor(255,255,0,30));
-
 
263
 
-
 
264
    //qDebug("Team: %d, %d of %d", team-1, ii, ui->tableWidget->columnCount() );
-
 
265
 
-
 
266
    if (ii == 3)
-
 
267
    {
-
 
268
        titem = new QTableWidgetItem();
-
 
269
        titem->setData(Qt::EditRole, ltime);
-
 
270
        ui->tableWidget->setItem(team-1,2,titem);
-
 
271
        titem->setBackgroundColor(QColor(0,255,0,30));
-
 
272
    }
-
 
273
 
-
 
274
    int delta = max_time - min_time;
-
 
275
    if ( delta )
-
 
276
    {
-
 
277
        ui->tableWidget->item(team-1,1)->setData(Qt::EditRole, QTime().addSecs(delta));
-
 
278
    }
-
 
279
}
-
 
280
 
52
void QmDialogUploadLegTimes::load(void)
281
void QmDialogUploadLegTimes::load(void)
53
{
282
{
54
    QString fileName = QFileDialog::getOpenFileName(this, tr("Load File"),
283
    QString fileName = QFileDialog::getOpenFileName(this, tr("Load File"),
55
                                                 filepath,
284
                                                 appSettings->value("LegTimeUpload/LastFile",filepath).toString(),
56
                                                 tr("Legs (*leg*);;Data (*.leg);;All (*.*)"),
285
                                                 tr("Legs (*leg*);;Data (*.leg);;Text (*.txt);;Csv (*.csv);;All (*.*)"),
57
                                                 0,
286
                                                 0,
58
                                                 QFileDialog::ReadOnly);
287
                                                 QFileDialog::ReadOnly);
59
    if ( fileName.isEmpty() )
288
    if ( fileName.isEmpty() )
60
    {
289
    {
61
        MainWindow::showMessage("No File Specified");
290
        MainWindow::showMessage("No File Specified");
62
        return;
291
        return;
63
    }
292
    }
64
 
293
 
-
 
294
    appSettings->setValue("LegTimeUpload/LastFile", fileName); 
-
 
295
 
-
 
296
 
65
    // Open the file
297
    // Open the file
66
 
298
 
67
    QFile file(fileName);
299
    QFile file(fileName);
68
    if ( ! file.open(QIODevice::ReadOnly | QIODevice::Text) )
300
    if ( ! file.open(QIODevice::ReadOnly | QIODevice::Text) )
69
    {
301
    {
70
        MainWindow::showMessage("Cannot open Leg Data file");
302
        MainWindow::showMessage("Cannot open Leg Data file");
71
        return;
303
        return;
72
    }
304
    }
73
    ui->status->setText("Loading Data");
305
    ui->status->setText("Loading Data");
74
    // Insert column headers
306
    // Insert column headers
75
    ui->tableWidget->clearContents();
307
    //ui->tableWidget->clearContents();
76
    ui->tableWidget->setRowCount(0);
308
    //ui->tableWidget->setRowCount(0);
77
 
309
 
78
 
310
 
79
    // Process Each line of the file
311
    // Process Each line of the file
80
    //  Format is TeamNumber Time
312
    //  Format (original) is TeamNumber Time
-
 
313
    //  Format (alternate) is TeamNumber Date Time
-
 
314
    //                                       Time has milliseconds
81
    QTextStream in(&file);
315
    QTextStream in(&file);
82
    while (!in.atEnd())
316
    while (!in.atEnd())
83
    {
317
    {
84
        QString line = in.readLine();
318
        processOneLine(in.readLine());
85
        line = line.trimmed();             // Remove leading and training White Space
-
 
86
        QStringList parts = line.split(" ");
-
 
87
        QString first = parts.value(0);
-
 
88
        if ( parts.count() != 2)
-
 
89
        {
-
 
90
            qDebug("Funny Line: %s", qPrintable(line));
-
 
91
            continue;
-
 
92
        }
-
 
93
 
-
 
94
        bool ok;
-
 
95
        int team = first.toInt(&ok);
-
 
96
        if ( ! ok || team <= 0 )
-
 
97
            continue;
-
 
98
        if (team > ui->tableWidget->rowCount())
-
 
99
        {
-
 
100
            ui->tableWidget->setRowCount(team);
-
 
101
        }
-
 
102
 
-
 
103
        QTableWidgetItem *item = ui->tableWidget->item(team-1,0);
-
 
104
        if (!item)
-
 
105
        {
-
 
106
            item = new QTableWidgetItem(QString::number(team));
-
 
107
            item->setFlags(item->flags() & ~(Qt::ItemIsEditable|Qt::ItemIsDragEnabled|Qt::ItemIsDropEnabled));
-
 
108
            ui->tableWidget->setItem(team-1,0,item);
-
 
109
            item->setData(Qt::ToolTipRole,"Team Number");
-
 
110
 
-
 
111
            item = new QTableWidgetItem("");
-
 
112
            item->setFlags(item->flags() & ~(Qt::ItemIsEditable|Qt::ItemIsDragEnabled|Qt::ItemIsDropEnabled));
-
 
113
            ui->tableWidget->setItem(team-1,1,item);
-
 
114
            item->setData(Qt::ToolTipRole,"Max delta");
-
 
115
 
-
 
116
            item = new QTableWidgetItem("");
-
 
117
            item->setFlags(item->flags() & ~(Qt::ItemIsDragEnabled|Qt::ItemIsDropEnabled));
-
 
118
            ui->tableWidget->setItem(team-1,2,item);
-
 
119
            item->setData(Qt::ToolTipRole,"Use this data");
-
 
120
        }
-
 
121
 
-
 
122
        //  Insert the time at the first available slot
-
 
123
        //  Scan for max an min as we go
-
 
124
        int ii;
-
 
125
        QTableWidgetItem *titem = NULL;
-
 
126
        QTime ltime = QTime::fromString(parts.value(1),"hh:mm:ss");
-
 
127
        unsigned int lsecs = QTime(0,0,0).secsTo(ltime);
-
 
128
        if ( lsecs <= 0)
-
 
129
        {
-
 
130
            qDebug("Funny Line: %s", qPrintable(line));
-
 
131
            continue;
-
 
132
        }
-
 
133
        //qDebug("Tead: %d, Secs: %d", team, lsecs );
-
 
134
        unsigned int min_time = lsecs;
-
 
135
        unsigned int max_time = lsecs;
-
 
136
 
-
 
137
        for (ii=3 ; ii < ui->tableWidget->columnCount(); ii++)
-
 
138
        {
-
 
139
            titem = ui->tableWidget->item(team-1,ii);
-
 
140
            if (! titem)
-
 
141
            {
-
 
142
                break;
-
 
143
            }
-
 
144
 
-
 
145
            QTime entry = titem->data(Qt::EditRole).toTime();
-
 
146
            unsigned int secs = QTime(0,0,0).secsTo(entry);
-
 
147
            if ( secs < min_time )
-
 
148
                min_time = secs;
-
 
149
            if (secs > max_time)
-
 
150
                max_time = secs;
-
 
151
        }
-
 
152
        titem = new QTableWidgetItem();
-
 
153
        titem->setData(Qt::EditRole, ltime);
-
 
154
        titem->setFlags(titem->flags() & ~(Qt::ItemIsEditable|Qt::ItemIsDragEnabled|Qt::ItemIsDropEnabled));
-
 
155
        ui->tableWidget->setItem(team-1,ii,titem);
-
 
156
 
-
 
157
        if (ii == 3)
-
 
158
        {
-
 
159
            titem = new QTableWidgetItem();
-
 
160
            titem->setData(Qt::EditRole, ltime);
-
 
161
            ui->tableWidget->setItem(team-1,2,titem);
-
 
162
            titem->setBackgroundColor(QColor(0,255,0,30));
-
 
163
        }
-
 
164
 
-
 
165
        int delta = max_time - min_time;
-
 
166
        if ( delta )
-
 
167
        {
-
 
168
            ui->tableWidget->item(team-1,1)->setData(Qt::EditRole, QTime().addSecs(delta));
-
 
169
        }
-
 
170
    }
319
    }
171
 
320
 
172
    // Update Error information
321
    // Update Error information
173
    updateDeltaDisplay();
322
    updateDeltaDisplay();
174
 
323
 
Line 176... Line 325...
176
 
325
 
177
void QmDialogUploadLegTimes::updateDeltaDisplay( void )
326
void QmDialogUploadLegTimes::updateDeltaDisplay( void )
178
{
327
{
179
    bool isFlagged = false;
328
    bool isFlagged = false;
180
    QTime maxDelta(0,0,0,0);
329
    QTime maxDelta(0,0,0,0);
181
    QTime delta = QTime().addSecs(ui->deltaTime->value());
330
    QTime delta = ui->deltaTime->time();
-
 
331
    //qDebug("New Delta: %s", qPrintable(ui->deltaTime->time().toString()));
182
    for ( int ii = 0; ii < ui->tableWidget->rowCount(); ii++)
332
    for ( int ii = 0; ii < ui->tableWidget->rowCount(); ii++)
183
    {
333
    {
184
        bool show = true;
334
        bool show = true;
185
        QTableWidgetItem *item;
335
        QTableWidgetItem *item;
186
        item = ui->tableWidget->item(ii, 1);
336
        item = ui->tableWidget->item(ii, 1);
Line 271... Line 421...
271
     }
421
     }
272
}
422
}
273
 
423
 
274
void QmDialogUploadLegTimes::itemActivated ( QTableWidgetItem * uitem )
424
void QmDialogUploadLegTimes::itemActivated ( QTableWidgetItem * uitem )
275
{
425
{
-
 
426
    // Use this item for the time, but only if the item is from a 'time' column
276
    // Use this item for the time
427
    if ( uitem->column() >= 3 )
-
 
428
    {
277
    QTableWidgetItem *titem = new QTableWidgetItem(*uitem);
429
        QTableWidgetItem *titem = new QTableWidgetItem(*uitem);
278
    titem->setFlags(titem->flags()| Qt::ItemIsEditable);
430
        titem->setFlags(titem->flags()| Qt::ItemIsEditable);
279
    ui->tableWidget->setItem(uitem->row(),2,titem);
431
        ui->tableWidget->setItem(uitem->row(),2,titem);
280
    titem->setBackgroundColor(QColor(0,0,255,30));
432
        titem->setBackgroundColor(QColor(0,0,255,30));
-
 
433
    }
-
 
434
}
281
 
435
 
-
 
436
void QmDialogUploadLegTimes::legNumberChanged(int leg)
-
 
437
{
-
 
438
    //qDebug() << "Leg:" << leg;
-
 
439
    ui->fromEvent->setEnabled(leg != 0);
-
 
440
    ui->update->setEnabled( leg != 0);
282
}
441
}