Subversion Repositories svn1-original

Rev

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

Rev 143 Rev 146
Line -... Line 1...
-
 
1
/*============================================================================
-
 
2
**
-
 
3
**  Project/Product : 
-
 
4
**  Filename        : qmteamdisplay.cpp
-
 
5
**  Author(s)       : DDP
-
 
6
**
-
 
7
**  Description     : Display and Update Team Information
-
 
8
**
-
 
9
**
-
 
10
**  Information     :
-
 
11
**   Compiler       : ANSI C++
-
 
12
**   Target         : 
-
 
13
**
-
 
14
***==========================================================================*/
-
 
15
 
1
#include "qmteamdisplay.h"
16
#include "qmteamdisplay.h"
2
#include "ui_qmteamdisplay.h"
17
#include "ui_qmteamdisplay.h"
3
#include "spinboxdelegate.h"
18
#include "spinboxdelegate.h"
4
#include "timedelegate.h"
19
#include "timedelegate.h"
5
#include "textdelegate.h"
20
#include "textdelegate.h"
6
 
21
 
-
 
22
/*----------------------------------------------------------------------------
-
 
23
** FUNCTION           : qmTeamDisplay
-
 
24
**
-
 
25
** DESCRIPTION        : Construct a new widget
-
 
26
**
-
 
27
**
-
 
28
** INPUTS             :
-
 
29
**
-
 
30
** RETURNS            :
-
 
31
**
-
 
32
----------------------------------------------------------------------------*/
-
 
33
 
-
 
34
 
7
qmTeamDisplay::qmTeamDisplay(QWidget *parent) :
35
qmTeamDisplay::qmTeamDisplay(QWidget *parent) :
8
    QWidget(parent),
36
    QWidget(parent),
9
    ui(new Ui::QmTeamDisplay)
37
    ui(new Ui::QmTeamDisplay)
10
 
-
 
11
{
38
{
12
    ui->setupUi(this);
39
    ui->setupUi(this);
13
    team = 0;
40
    team = 0;
14
 
41
 
15
    /*
42
    /*
Line 20... Line 47...
20
    {
47
    {
21
        ui->category->addItem(config.team_class[ii].full_name, ii);
48
        ui->category->addItem(config.team_class[ii].full_name, ii);
22
    }
49
    }
23
    ui->category->setCurrentIndex(-1);
50
    ui->category->setCurrentIndex(-1);
24
 
51
 
-
 
52
    /*
-
 
53
    **  Set delegates to assist in editing the members table
-
 
54
    **      Name
-
 
55
    **      Sex
-
 
56
    **      Age
-
 
57
    */
25
    ui->members->setItemDelegateForColumn(0, new textDelegate(MAX_PERSON_NAME));
58
    ui->members->setItemDelegateForColumn(0, new textDelegate(MAX_PERSON_NAME));
26
  //ui->members->setItemDelegateForColumn(1, new timeDelegate());
-
 
27
    ui->members->setItemDelegateForColumn(2, new SpinBoxDelegate(0,120));
59
    ui->members->setItemDelegateForColumn(2, new SpinBoxDelegate(0,120));
28
 
60
 
29
    /*
61
    /*
30
    ** Insert widgets for the Team Times
62
    ** Insert widgets for the Team Times
31
    */
63
    */
32
    int ii;
-
 
33
    for ( ii = 1 ; ii <= config.num_legs; ii++)
64
    for ( int ii = 1 ; ii <= config.num_legs; ii++)
34
    {
65
    {
35
        lt[ii] = new QmLegTimes(ii, config.leg_name[ii-1]);
66
        lt[ii] = new QmLegTimes(ii, config.leg_name[ii-1]);
36
        ui->legTime_layout->addWidget(lt[ii]);
67
        ui->legTime_layout->addWidget(lt[ii]);
37
        connect (lt[ii], SIGNAL(dataChanged()), this, SLOT(recalculateTimes()) );
68
        connect (lt[ii], SIGNAL(dataChanged()), this, SLOT(recalculateTimes()) );
38
    }
69
    }
39
    lt[0] = new QmLegTimes(0, "Overall Event");
70
    lt[0] = new QmLegTimes(0, "Overall Event");
40
    ui->legTime_layout->addWidget(lt[0]);
71
    ui->legTime_layout->addWidget(lt[0]);
41
 
72
 
-
 
73
    /*
-
 
74
    **  Connect up various signals
-
 
75
    */
42
    connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(save()) );
76
    connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(save()) );
43
    connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(cancel()) );
77
    connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(cancel()) );
44
    connect(ui->teamNumber, SIGNAL(valueChanged(int)), this, SLOT(populate(int)) );
78
    connect(ui->teamNumber, SIGNAL(valueChanged(int)), this, SLOT(populate(int)) );
45
}
79
}
46
 
80
 
-
 
81
/*----------------------------------------------------------------------------
-
 
82
** FUNCTION           : ~qmTeamDisplay
-
 
83
**
-
 
84
** DESCRIPTION        : Destructor
-
 
85
**
-
 
86
**
-
 
87
** INPUTS             :
-
 
88
**
-
 
89
** RETURNS            :
-
 
90
**
-
 
91
----------------------------------------------------------------------------*/
-
 
92
 
47
qmTeamDisplay::~qmTeamDisplay()
93
qmTeamDisplay::~qmTeamDisplay()
48
{
94
{
49
    delete ui;
95
    delete ui;
50
}
96
}
51
 
97
 
-
 
98
/*----------------------------------------------------------------------------
-
 
99
** FUNCTION           : populate
-
 
100
**
-
 
101
** DESCRIPTION        : Populate the widget with data
-
 
102
**
-
 
103
**
-
 
104
** INPUTS             : team_number         - Team number to use
-
 
105
**
-
 
106
** RETURNS            :
-
 
107
**
-
 
108
----------------------------------------------------------------------------*/
-
 
109
 
52
void qmTeamDisplay::populate(int team_number)
110
void qmTeamDisplay::populate(int team_number)
53
{
111
{
-
 
112
    /*
-
 
113
    **  Update the spinner that describes the current team number
-
 
114
    */
-
 
115
 
54
    ui->teamNumber->setMaximum(config.max_team);
116
    ui->teamNumber->setMaximum(config.max_team);
55
    ui->teamNumber->setValue(team_number);
117
    ui->teamNumber->setValue(team_number);
56
    team = team_number;
118
    team = team_number;
-
 
119
 
-
 
120
    /*
-
 
121
    **  Read in team data
-
 
122
    **  This will persist within this widget
-
 
123
    */
57
    g_record( team, &team_buf );
124
    g_record( team, &team_buf );
58
 
125
 
59
    /*
126
    /*
60
    ** Basic Data
127
    ** Basic Data
61
    */
128
    */
Line 66... Line 133...
66
 
133
 
67
    ui->disqualified->setCheckState(team_buf.flags.disqualified ? Qt::Checked : Qt::Unchecked);
134
    ui->disqualified->setCheckState(team_buf.flags.disqualified ? Qt::Checked : Qt::Unchecked);
68
    ui->nonEquestrian->setCheckState(team_buf.flags.non_equestrian ? Qt::Checked : Qt::Unchecked);
135
    ui->nonEquestrian->setCheckState(team_buf.flags.non_equestrian ? Qt::Checked : Qt::Unchecked);
69
    ui->disabled->setCheckState( !team_buf.flags.valid ? Qt::Checked : Qt::Unchecked);
136
    ui->disabled->setCheckState( !team_buf.flags.valid ? Qt::Checked : Qt::Unchecked);
70
 
137
 
71
 
-
 
72
    /*
138
    /*
73
    ** Team Member data
139
    ** Team Member data
-
 
140
    **       Name
-
 
141
    **      Sex
-
 
142
    **      Age
74
    */
143
    */
75
    int age_sum = 0;
144
    int age_sum = 0;
76
    for ( int ii = 0; ii < config.num_legs; ii ++)
145
    for ( int ii = 0; ii < config.num_legs; ii ++)
77
    {
146
    {
78
         QTableWidgetItem *item;
147
         QTableWidgetItem *item;
Line 110... Line 179...
110
            {
179
            {
111
                age_sum = -1;
180
                age_sum = -1;
112
            }
181
            }
113
        }
182
        }
114
    }
183
    }
-
 
184
    ui->members->resizeColumnsToContents();
115
 
185
 
-
 
186
    /*
-
 
187
    **  Mainatainthe display of total age
-
 
188
    */
116
    if ( age_sum <= 0 )
189
    if ( age_sum <= 0 )
117
    {
190
    {
118
        ui->totalAge->setText("--");
191
        ui->totalAge->setText("--");
119
    }
192
    }
120
    else
193
    else
121
    {
194
    {
122
        ui->totalAge->setText(QString::number(age_sum));
195
        ui->totalAge->setText(QString::number(age_sum));
123
    }
196
    }
124
 
197
 
125
    ui->members->resizeColumnsToContents();
-
 
126
 
198
 
127
    /*
199
    /*
128
    ** Leg Times
200
    ** Leg Times
129
    */
201
    */
130
    for ( int ii = 0 ; ii <= config.num_legs; ii++)
202
    for ( int ii = 0 ; ii <= config.num_legs; ii++)
131
    {
203
    {
132
        lt[ii]->setData(&team_buf.leg[ii]);
204
        lt[ii]->setData(&team_buf.leg[ii]);
133
    }
205
    }
134
}
206
}
135
 
207
 
-
 
208
/*----------------------------------------------------------------------------
-
 
209
** FUNCTION           : recalculateTimes
-
 
210
**
-
 
211
** DESCRIPTION        : Recalculate and update all the times for the legs
-
 
212
**
-
 
213
**
-
 
214
** INPUTS             : None
-
 
215
**
-
 
216
** RETURNS            :
-
 
217
**
-
 
218
----------------------------------------------------------------------------*/
-
 
219
 
136
void qmTeamDisplay::recalculateTimes( void )
220
void qmTeamDisplay::recalculateTimes( void )
137
{
221
{
138
    for ( int ii = 0 ; ii <= config.num_legs; ii++)
222
    for ( int ii = 0 ; ii <= config.num_legs; ii++)
139
    {
223
    {
140
        lt[ii]->getData(&team_buf.leg[ii]);
224
        lt[ii]->getData(&team_buf.leg[ii]);
Line 145... Line 229...
145
    {
229
    {
146
        lt[ii]->setData(&team_buf.leg[ii]);
230
        lt[ii]->setData(&team_buf.leg[ii]);
147
    }
231
    }
148
}
232
}
149
 
233
 
-
 
234
/*----------------------------------------------------------------------------
-
 
235
** FUNCTION           : save
-
 
236
**
-
 
237
** DESCRIPTION        : Save the data back to disk
-
 
238
**
-
 
239
** INPUTS             :
-
 
240
**
-
 
241
** RETURNS            :
-
 
242
**
-
 
243
----------------------------------------------------------------------------*/
-
 
244
 
150
void qmTeamDisplay::save(void)
245
void qmTeamDisplay::save(void)
151
{
246
{
152
    /*
247
    /*
153
    ** Extract data from the widgets
248
    ** Extract data from the widgets
154
    ** The time stuff is done on the fly as it changes
249
    ** The time stuff is done on the fly as it changes
Line 182... Line 277...
182
 
277
 
183
        item = ui->members->item ( ii, 2 );
278
        item = ui->members->item ( ii, 2 );
184
        team_buf.members[ii].age = item->data(Qt::EditRole).toInt();
279
        team_buf.members[ii].age = item->data(Qt::EditRole).toInt();
185
 
280
 
186
    }
281
    }
187
    //TODO : Mainatin age summary
282
qDebug("TODO : Mainatin age summary");
188
 
283
 
189
    /*
284
    /*
190
    ** Save the record back to disk
285
    ** Save the record back to disk
191
    */
286
    */
192
    put_team_record( team, &team_buf );
287
    put_team_record( team, &team_buf );
193
    populate(team);
288
    populate(team);
194
}
289
}
195
 
290
 
-
 
291
/*----------------------------------------------------------------------------
-
 
292
** FUNCTION           : cancel
-
 
293
**
-
 
294
** DESCRIPTION        : Kill of any edited data
-
 
295
**                      Redisplay the team data
-
 
296
**
-
 
297
** INPUTS             :
-
 
298
**
-
 
299
** RETURNS            :
-
 
300
**
-
 
301
----------------------------------------------------------------------------*/
-
 
302
 
-
 
303
 
196
void qmTeamDisplay::cancel(void)
304
void qmTeamDisplay::cancel(void)
197
{
305
{
198
    populate(team);
306
    populate(team);
199
}
307
}
200
 
308
 
-
 
309
/*----------------------------------------------------------------------------
-
 
310
** FUNCTION           : changeEvent
-
 
311
**
-
 
312
** DESCRIPTION        :
-
 
313
**
-
 
314
**
-
 
315
** INPUTS             :
-
 
316
**
-
 
317
** RETURNS            :
-
 
318
**
-
 
319
----------------------------------------------------------------------------*/
-
 
320
 
201
void qmTeamDisplay::changeEvent(QEvent *e)
321
void qmTeamDisplay::changeEvent(QEvent *e)
202
{
322
{
203
//qDebug("ChangeEvent: %d",e->type());
323
//qDebug("ChangeEvent: %d",e->type());
204
    QWidget::changeEvent(e);
324
    QWidget::changeEvent(e);
205
    switch (e->type()) {
325
    switch (e->type()) {