Subversion Repositories svn1-original

Rev

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

Rev 314 Rev 315
Line 25... Line 25...
25
#define COL_ST_DISQ 8
25
#define COL_ST_DISQ 8
26
#define COL_ST_NONEQ 9
26
#define COL_ST_NONEQ 9
27
#define COL_ST_VET 10
27
#define COL_ST_VET 10
28
#define COL_ST_CEV 11
28
#define COL_ST_CEV 11
29
#define COL_ST_CNE 12
29
#define COL_ST_CNE 12
-
 
30
#define COL_INDEX 13
-
 
31
 
30
#define COL_COUNT 13
32
#define COL_COUNT 14
31
 
33
 
32
 
34
 
33
QmConfClass::QmConfClass(QWidget *parent) :
35
QmConfClass::QmConfClass(QWidget *parent) :
34
    QWidget(parent)
36
    QWidget(parent)
35
{
37
{
Line 65... Line 67...
65
    horizontalLayout = new QHBoxLayout();
67
    horizontalLayout = new QHBoxLayout();
66
    horizontalLayout->setContentsMargins(0, 0, 5, 5);
68
    horizontalLayout->setContentsMargins(0, 0, 5, 5);
67
    verticalLayout->addLayout(horizontalLayout);
69
    verticalLayout->addLayout(horizontalLayout);
68
 
70
 
69
    QDialogButtonBox *buttonBox = new QDialogButtonBox();
71
    QDialogButtonBox *buttonBox = new QDialogButtonBox();
70
    statusButton = buttonBox->addButton("Update Status",QDialogButtonBox::ActionRole );
-
 
71
    pushButtonRestore = buttonBox->addButton("Restore",QDialogButtonBox::ActionRole );
72
    pushButtonRestore = buttonBox->addButton("Restore",QDialogButtonBox::ActionRole );
72
    pushButtonSave = buttonBox->addButton("Save",QDialogButtonBox::ActionRole );
73
    pushButtonSave = buttonBox->addButton("Save",QDialogButtonBox::ActionRole );
73
    horizontalLayout->addWidget(buttonBox);
74
    horizontalLayout->addWidget(buttonBox);
74
 
75
 
75
 
76
 
Line 77... Line 78...
77
    connect(pushButtonRestore, SIGNAL(clicked(bool)), this, SLOT(cancel()) );
78
    connect(pushButtonRestore, SIGNAL(clicked(bool)), this, SLOT(cancel()) );
78
 
79
 
79
    QStringList labels;
80
    QStringList labels;
80
    labels << "Abr" << "Full Name" << "Start Time" << "Winners" << "NE" << "NE Winners";
81
    labels << "Abr" << "Full Name" << "Start Time" << "Winners" << "NE" << "NE Winners";
81
 
82
 
-
 
83
    labels << "Total" << "Valid" <<"Disqual" << "NonEq" << "VetCheck" << "Comp Ev" << " Comp NE";
-
 
84
 
-
 
85
    labels << "Index";
-
 
86
 
-
 
87
    tableWidget->setHorizontalHeaderLabels(labels);
-
 
88
    tableWidget->resizeColumnsToContents();
82
 
89
 
83
    connect(tableWidget, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(ctxMenu(const QPoint &)));
90
    connect(tableWidget, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(ctxMenu(const QPoint &)));
84
    connect(tableWidget, SIGNAL(cellChanged(int,int)), this, SLOT(cellChanged(int,int)));
91
    connect(tableWidget, SIGNAL(cellChanged(int,int)), this, SLOT(cellChanged(int,int)));
85
 
92
 
86
 
-
 
87
    /*
93
    /*
88
    **  Setup delegated for specialised editing
94
    **  Setup delegated for specialised editing
89
    */
95
    */
90
    tableWidget->setItemDelegateForColumn(COL_ABR, new textDelegate(2));
96
    tableWidget->setItemDelegateForColumn(COL_ABR, new textDelegate(2));
91
    tableWidget->setItemDelegateForColumn(COL_CLASS, new textDelegate(LEN_CLASS_NAME));
97
    tableWidget->setItemDelegateForColumn(COL_CLASS, new textDelegate(LEN_CLASS_NAME));
92
    tableWidget->setItemDelegateForColumn(COL_TIME, new timeDelegate());
98
    tableWidget->setItemDelegateForColumn(COL_TIME, new timeDelegate());
93
    tableWidget->setItemDelegateForColumn(COL_WINNERS, new SpinBoxDelegate(0,50));
99
    tableWidget->setItemDelegateForColumn(COL_WINNERS, new SpinBoxDelegate(0,50));
94
    tableWidget->setItemDelegateForColumn(COL_NE_WINNERS, new SpinBoxDelegate(0,50));
100
    tableWidget->setItemDelegateForColumn(COL_NE_WINNERS, new SpinBoxDelegate(0,50));
95
 
101
 
96
    populate();
102
    populate();
97
 
-
 
98
 
-
 
99
    // Wire in the status button
-
 
100
    connect(statusButton, SIGNAL(clicked()), this, SLOT(updateStatus()));
-
 
101
    statusShown = false;
-
 
102
    tableWidget->setColumnHidden(COL_ST_TOTAL, true);
-
 
103
    tableWidget->setColumnHidden(COL_ST_VALID, true);
-
 
104
    tableWidget->setColumnHidden(COL_ST_DISQ, true);
-
 
105
    tableWidget->setColumnHidden(COL_ST_NONEQ, true);
-
 
106
    tableWidget->setColumnHidden(COL_ST_VET, true);
-
 
107
    tableWidget->setColumnHidden(COL_ST_CEV, true);
-
 
108
    tableWidget->setColumnHidden(COL_ST_CNE, true);
-
 
109
 
-
 
110
    labels << "Total" << "Valid" <<"Disqual" << "NonEq" << "VetCheck" << "Comp Ev" << " Comp NE";
-
 
111
 
-
 
112
    tableWidget->setHorizontalHeaderLabels(labels);
-
 
113
    tableWidget->resizeColumnsToContents();
-
 
114
 
-
 
115
}
103
}
116
 
104
 
-
 
105
/*----------------------------------------------------------------------------
-
 
106
** FUNCTION           : populate
-
 
107
**
-
 
108
** DESCRIPTION        : Populate the display with information
-
 
109
**
-
 
110
----------------------------------------------------------------------------*/
-
 
111
 
117
void QmConfClass::populate(void)
112
void QmConfClass::populate(void)
118
{
113
{
-
 
114
    bool    reportDataLoaded = false;
-
 
115
    t_class_summary data;
-
 
116
 
119
    populating = true;
117
    populating = true;
120
    tableWidget->clearContents();
118
    tableWidget->clearContents();
121
    tableWidget->setSortingEnabled(false);
119
    tableWidget->setSortingEnabled(false);
122
    
-
 
123
    tableWidget->setRowCount(config.num_class + 1);
120
    tableWidget->setRowCount(config.num_class + 1);
-
 
121
 
-
 
122
    /*
124
    for ( int ii = 0; ii < MAX_CLASS; ii++)
123
    ** Load Report Data if we can
-
 
124
    */
-
 
125
    if( load_report_data() )
125
    {
126
    {
126
        tableWidget->setItem(ii, COL_ABR, new QTableWidgetItem(config.team_class[ii].abr) );
127
        calc_class_summary( & data );
127
        tableWidget->setItem(ii, COL_CLASS, new QTableWidgetItem(config.team_class[ii].full_name ));
128
        reportDataLoaded = true;
-
 
129
    }
128
 
130
 
-
 
131
    /*
-
 
132
    **  Add all the information
-
 
133
    */
-
 
134
    int ii = 0;
-
 
135
    int entryIndex = 0;
-
 
136
    for ( ii = 0; ii < MAX_CLASS; ii++)
-
 
137
    {
129
        if ( *config.team_class[ii].abr )
138
        if ( config.team_class[ii].abr[0] )
130
        {
139
        {
-
 
140
            // Keep the config item index entry
-
 
141
            //  Will need it when we write stiff out
-
 
142
            tableWidget->setItem(entryIndex, COL_INDEX, new qmTwiNumber(ii));
-
 
143
 
-
 
144
            tableWidget->setItem(entryIndex, COL_ABR, new QTableWidgetItem(config.team_class[ii].abr) );
-
 
145
            tableWidget->setItem(entryIndex, COL_CLASS, new QTableWidgetItem(config.team_class[ii].full_name ));
-
 
146
 
131
            QTableWidgetItem *item;
147
            QTableWidgetItem *item;
132
            item = new QTableWidgetItem();
148
            item = new QTableWidgetItem();
133
            item->setData(Qt::EditRole,QTime().addSecs(config.team_class[ii].start) );
149
            item->setData(Qt::EditRole,QTime().addSecs(config.team_class[ii].start) );
134
            tableWidget->setItem(ii, COL_TIME, item);
150
            tableWidget->setItem(entryIndex, COL_TIME, item);
135
 
151
 
136
            item = new qmTwiEditNumber(config.class_winners[ii]);
152
            item = new qmTwiEditNumber(config.class_winners[ii]);
137
            tableWidget->setItem(ii, COL_WINNERS, item);
153
            tableWidget->setItem(entryIndex, COL_WINNERS, item);
138
 
154
 
139
            item = new QTableWidgetItem();
155
            item = new QTableWidgetItem();
140
            item->setCheckState(config.nonequestrian_class == 1 + ii ? Qt::Checked : Qt::Unchecked);
156
            item->setCheckState(config.nonequestrian_class == 1 + ii ? Qt::Checked : Qt::Unchecked);
141
            tableWidget->setItem(ii, COL_NE, item);
157
            tableWidget->setItem(entryIndex, COL_NE, item);
142
 
158
 
143
            item = new qmTwiEditNumber(config.class_ne_winners[ii]);
159
            item = new qmTwiEditNumber(config.class_ne_winners[ii]);
144
            tableWidget->setItem(ii, COL_NE_WINNERS, item);
160
            tableWidget->setItem(entryIndex, COL_NE_WINNERS, item);
-
 
161
 
-
 
162
            if (reportDataLoaded)
-
 
163
            {
-
 
164
                tableWidget->setItem(entryIndex,COL_ST_TOTAL, new qmTwiNumber(data.teamclass[ii+1].total) );
-
 
165
                tableWidget->setItem(entryIndex,COL_ST_VALID, new qmTwiNumber(data.teamclass[ii+1].valid) );
-
 
166
                tableWidget->setItem(entryIndex,COL_ST_DISQ,  new qmTwiNumber(data.teamclass[ii+1].disqualified));
-
 
167
                tableWidget->setItem(entryIndex,COL_ST_NONEQ, new qmTwiNumber(data.teamclass[ii+1].non_equestrian));
-
 
168
                tableWidget->setItem(entryIndex,COL_ST_VET,   new qmTwiNumber(data.teamclass[ii+1].vet_check));
-
 
169
                tableWidget->setItem(entryIndex,COL_ST_CEV,   new qmTwiNumber(data.teamclass[ii+1].valid_ev));
-
 
170
                tableWidget->setItem(entryIndex,COL_ST_CNE,   new qmTwiNumber(data.teamclass[ii+1].valid_ne));
-
 
171
            }
-
 
172
            entryIndex++;
145
        }
173
        }
146
    }
174
    }
-
 
175
 
-
 
176
    //  Insert Totals
-
 
177
    //      Flag that items on this this row is not to be sorted - or at least 
-
 
178
    //      sorted at the end
-
 
179
    //
-
 
180
    if (reportDataLoaded)
-
 
181
    {
-
 
182
        tableWidget->setItem(entryIndex,COL_ABR,      new qmTwiString("Totals", 1));
-
 
183
        tableWidget->setItem(entryIndex,COL_ST_TOTAL, new qmTwiNumber(data.total.total, 1));
-
 
184
        tableWidget->setItem(entryIndex,COL_ST_VALID, new qmTwiNumber(data.total.valid, 1));
-
 
185
        tableWidget->setItem(entryIndex,COL_ST_DISQ,  new qmTwiNumber(data.total.disqualified, 1));
-
 
186
        tableWidget->setItem(entryIndex,COL_ST_NONEQ, new qmTwiNumber(data.total.non_equestrian, 1));
-
 
187
        tableWidget->setItem(entryIndex,COL_ST_VET,   new qmTwiNumber(data.total.vet_check, 1));
-
 
188
        tableWidget->setItem(entryIndex,COL_ST_CEV,   new qmTwiNumber(data.total.valid_ev, 1));
-
 
189
        tableWidget->setItem(entryIndex,COL_ST_CNE,   new qmTwiNumber(data.total.valid_ne, 1));
-
 
190
    }
-
 
191
 
-
 
192
    tableWidget->resizeColumnsToContents();
-
 
193
    tableWidget->resizeRowsToContents();
-
 
194
    tableWidget->setSortingEnabled(true);
-
 
195
 
147
    updateChanged(false);
196
    updateChanged(false);
148
    populating = false;
197
    populating = false;
149
}
198
}
150
 
199
 
151
void QmConfClass::save(void)
200
void QmConfClass::save(void)
Line 156... Line 205...
156
    QmConfig newcfg(config);
205
    QmConfig newcfg(config);
157
 
206
 
158
    /*
207
    /*
159
    **  Extract the data from the Widgets
208
    **  Extract the data from the Widgets
160
    */
209
    */
161
    int entryIndex = 0;
-
 
162
    int ii = 0;
-
 
163
    for (; entryIndex < tableWidget->rowCount() &&  ii < MAX_CLASS; entryIndex++)
210
    for (int entryIndex = 0; entryIndex < tableWidget->rowCount(); entryIndex++)
164
    {
211
    {
165
 
212
 
166
        // Check that this is a real Entry or the 'Totals' header
213
        // Check that this is a real Entry or the 'Totals' header
167
        //      If its a qmTwiString, then this is not a real Class entry
214
        //      Real rows have a COL_INDEX entr
168
        //
215
        //
169
        QTableWidgetItem *item = tableWidget->item ( entryIndex, COL_ABR );
216
        QTableWidgetItem *item = tableWidget->item ( entryIndex, COL_INDEX );
170
        if ( item && dynamic_cast<const qmTwiString *>(item))
217
        if (! item)
171
        {
218
        {
172
            qDebug("Ignore row:%d", entryIndex);
219
            qDebug("Ignore row:%d", entryIndex);
173
            continue;
220
            continue;
174
        }
221
        }
-
 
222
        int ii = item->text().toInt();
-
 
223
        qDebug("Processing: %d", ii);
-
 
224
 
-
 
225
        if (ii >= MAX_CLASS || ii < 0)
-
 
226
        {
-
 
227
            qDebug("Ignore row:%d. Class out of rande", entryIndex);
-
 
228
            continue;
-
 
229
        }
175
 
230
 
-
 
231
        item = tableWidget->item ( entryIndex, COL_ABR );
176
        if ( item )
232
        if ( item )
177
        {
233
        {
178
            strncpy(newcfg.team_class[ii].abr, qPrintable(item->text()), sizeof(newcfg.team_class[ii].abr)-1);
234
            strncpy(newcfg.team_class[ii].abr, qPrintable(item->text()), sizeof(newcfg.team_class[ii].abr)-1);
179
        }
235
        }
180
        else
236
        else
Line 237... Line 293...
237
        }
293
        }
238
        else
294
        else
239
        {
295
        {
240
            newcfg.class_ne_winners[ii] = 0;
296
            newcfg.class_ne_winners[ii] = 0;
241
        }
297
        }
242
        ii++;
-
 
243
    }
298
    }
244
    
299
    
245
    // Validate the data
300
    // Validate the data
246
    try
301
    try
247
    {
302
    {
Line 373... Line 428...
373
void QmConfClass::ctxMenuAddRow(void)
428
void QmConfClass::ctxMenuAddRow(void)
374
{
429
{
375
    tableWidget->setRowCount( 1+ tableWidget->rowCount());
430
    tableWidget->setRowCount( 1+ tableWidget->rowCount());
376
}
431
}
377
 
432
 
378
void QmConfClass::updateStatus(void)
-
 
379
{
-
 
380
    populate();
-
 
381
    populating = true;
-
 
382
    tableWidget->setSortingEnabled(false);
-
 
383
    if (!statusShown)
-
 
384
    {
-
 
385
        tableWidget->setColumnHidden(COL_ST_TOTAL, false);
-
 
386
        tableWidget->setColumnHidden(COL_ST_VALID, false);
-
 
387
        tableWidget->setColumnHidden(COL_ST_DISQ, false);
-
 
388
        tableWidget->setColumnHidden(COL_ST_NONEQ, false);
-
 
389
        tableWidget->setColumnHidden(COL_ST_VET, false);
-
 
390
        tableWidget->setColumnHidden(COL_ST_CEV, false);
-
 
391
        tableWidget->setColumnHidden(COL_ST_CNE, false);
-
 
392
        statusShown = true;
-
 
393
    }
-
 
394
 
-
 
395
    if( load_report_data() )
-
 
396
    {
-
 
397
        t_class_summary data;
-
 
398
        calc_class_summary( & data );
-
 
399
 
-
 
400
        // Insert summary data
-
 
401
        int ii;
-
 
402
        for (ii = 0; ii < config.num_class; ii++)
-
 
403
        {
-
 
404
            tableWidget->setItem(ii,COL_ST_TOTAL, new qmTwiNumber(data.teamclass[ii+1].total) );
-
 
405
            tableWidget->setItem(ii,COL_ST_VALID, new qmTwiNumber(data.teamclass[ii+1].valid) );
-
 
406
            tableWidget->setItem(ii,COL_ST_DISQ,  new qmTwiNumber(data.teamclass[ii+1].disqualified));
-
 
407
            tableWidget->setItem(ii,COL_ST_NONEQ, new qmTwiNumber(data.teamclass[ii+1].non_equestrian));
-
 
408
            tableWidget->setItem(ii,COL_ST_VET,   new qmTwiNumber(data.teamclass[ii+1].vet_check));
-
 
409
            tableWidget->setItem(ii,COL_ST_CEV,   new qmTwiNumber(data.teamclass[ii+1].valid_ev));
-
 
410
            tableWidget->setItem(ii,COL_ST_CNE,   new qmTwiNumber(data.teamclass[ii+1].valid_ne));
-
 
411
        }
-
 
412
 
-
 
413
        //  Insert Totals
-
 
414
        tableWidget->setItem(ii,0,            new qmTwiString("Totals", 1));
-
 
415
        tableWidget->setItem(ii,COL_ST_TOTAL, new qmTwiNumber(data.total.total, 1));
-
 
416
        tableWidget->setItem(ii,COL_ST_VALID, new qmTwiNumber(data.total.valid, 1));
-
 
417
        tableWidget->setItem(ii,COL_ST_DISQ,  new qmTwiNumber(data.total.disqualified, 1));
-
 
418
        tableWidget->setItem(ii,COL_ST_NONEQ, new qmTwiNumber(data.total.non_equestrian, 1));
-
 
419
        tableWidget->setItem(ii,COL_ST_VET,   new qmTwiNumber(data.total.vet_check, 1));
-
 
420
        tableWidget->setItem(ii,COL_ST_CEV,   new qmTwiNumber(data.total.valid_ev, 1));
-
 
421
        tableWidget->setItem(ii,COL_ST_CNE,   new qmTwiNumber(data.total.valid_ne, 1));
-
 
422
 
-
 
423
 
-
 
424
        tableWidget->resizeColumnsToContents();
-
 
425
        tableWidget->resizeRowsToContents();
-
 
426
    }
-
 
427
    tableWidget->setSortingEnabled(true);
-
 
428
    populating = false;
-
 
429
}
-
 
430
 
-
 
431
void QmConfClass::cellChanged(int row,int col)
433
void QmConfClass::cellChanged(int row,int col)
432
{
434
{
433
    if ( populating )
435
    if ( populating )
434
        return;
436
        return;
435
    updateChanged(true);
437
    updateChanged(true);