Subversion Repositories svn1

Rev

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

Rev Author Line No. Line
143 david 1
/*============================================================================
2
**
3
**  Project/Product :
4
**  Filename        : qmlegtimes.cpp
5
**  Author(s)       : DDP
6
**
7
**  Description     : Display and edit leg time information
8
**
9
**
10
**  Information     :
11
**   Compiler       : ANSI C++
12
**   Target         : 
13
**
14
***==========================================================================*/
15
 
118 david 16
#include "qmlegtimes.h"
17
#include "ui_qmlegtimes.h"
18
 
143 david 19
/*----------------------------------------------------------------------------
20
** FUNCTION           : QmLegTimes
21
**
22
** DESCRIPTION        : Constructor
23
**
24
**
25
** INPUTS             : legnum
26
**                      name
27
**                      parent
28
**
29
** RETURNS            :
30
**
31
----------------------------------------------------------------------------*/
32
 
119 david 33
QmLegTimes::QmLegTimes(const int legnum, const QString &name, QWidget *parent) :
118 david 34
    QWidget(parent),
35
    ui(new Ui::QmLegTimes)
36
{
37
    ui->setupUi(this);
119 david 38
    leg = legnum;
121 david 39
    inSetData = FALSE;
118 david 40
    ui->legName->setText(name);
119 david 41
 
143 david 42
    /*
43
    **  Wire up the edit signals
44
    **  Leg-0 is special as its all calculated data and not editable
45
    */
126 david 46
    if ( leg )
123 - 47
    {
48
        connect( ui->checkBox,  SIGNAL(stateChanged(int)),  this, SLOT(enableStartTime(int)) );
49
        connect( ui->startTime, SIGNAL(timeChanged(QTime)), this, SLOT(updateData(void)) );
50
        connect( ui->endTime,   SIGNAL(timeChanged(QTime)), this, SLOT(updateData(void)) );
51
    }
52
    else
53
    {
54
        ui->checkBox->setEnabled(FALSE);
55
        ui->startTime->setEnabled(FALSE);
56
        ui->endTime->setEnabled(FALSE);
57
    }
118 david 58
}
59
 
143 david 60
/*----------------------------------------------------------------------------
61
** FUNCTION           : ~QmLegTimes
62
**
63
** DESCRIPTION        : Descructor
64
**
65
**
66
** INPUTS             :
67
**
68
** RETURNS            :
69
**
70
----------------------------------------------------------------------------*/
71
 
72
QmLegTimes::~QmLegTimes()
73
{
74
    delete ui;
75
}
76
 
77
/*----------------------------------------------------------------------------
380 david 78
** FUNCTION           : cleanPlace
79
**
80
** DESCRIPTION        : Convert place data to nice text
81
**
82
**
83
** INPUTS             : data        - Number to process
84
**
85
** RETURNS            :
86
**
87
----------------------------------------------------------------------------*/
88
 
89
QString cleanPlace(int data) {
90
    if (data <= 0)
91
        return "-";
92
    else
93
        return QString::number(data);
94
}
95
 
96
/*----------------------------------------------------------------------------
143 david 97
** FUNCTION           : setData
98
**
99
** DESCRIPTION        : Populate the widget with data from a team entry
100
**
101
**
102
** INPUTS             : data        - Leg entry to source data from
103
**
104
** RETURNS            :
105
**
106
----------------------------------------------------------------------------*/
107
 
119 david 108
void QmLegTimes::setData(leg_type *data)
109
{
121 david 110
    inSetData = TRUE;
111
    if (data->start < 0 )
112
    {
113
        ui->startTime->setTime(QTime(0,0,0,0));
114
    }
115
    else
116
    {
117
        ui->startTime->setTime(QTime().addSecs(data->start));
118
    }
119
 
119 david 120
    ui->startTime->setEnabled(data->manual);
121 david 121
    if ( data->end < 0 )
122
    {
123
        ui->endTime->setTime(QTime(0,0,0,0));
124
    }
125
    else
126
    {
127
        ui->endTime->setTime(QTime().addSecs(data->end));
128
    }
129
 
130
    if ( data->elapsed < 0 )
131
    {
132
        ui->elapsedTime->setText(QTime().toString("HH:mm:ss"));
133
    }
134
    else
135
    {
136
        ui->elapsedTime->setText(QTime().addSecs(data->elapsed).toString("HH:mm:ss"));
137
    }
119 david 138
    ui->checkBox->setChecked(data->manual);
380 david 139
    ui->lc_place->setText(cleanPlace(data->lc_place));
140
    ui->le_place->setText(cleanPlace(data->le_place));
141
    ui->l_place->setText(cleanPlace(data->l_place));
142
    ui->lec_place->setText(cleanPlace(data->lec_place));
121 david 143
    inSetData = FALSE;
119 david 144
}
145
 
143 david 146
/*----------------------------------------------------------------------------
147
** FUNCTION           : getData
148
**
149
** DESCRIPTION        : Return widget data directly into the leg data structure
150
**
151
**
152
** INPUTS             : data        - ref to target data
153
**
154
** RETURNS            :
155
**
156
----------------------------------------------------------------------------*/
157
 
158
 
121 david 159
void QmLegTimes::getData(leg_type *data)
160
{
161
    data->manual = ui->checkBox->checkState();
162
    data->start = QTime(0,0,0).secsTo(ui->startTime->time());
163
    data->end = QTime(0,0,0).secsTo(ui->endTime->time());
164
}
165
 
143 david 166
/*----------------------------------------------------------------------------
167
** FUNCTION           : enableStartTime
168
**
169
** DESCRIPTION        : Maintain the state of the starttime widget
170
**
171
**
172
** INPUTS             : state       - New state
173
**
174
** RETURNS            :
175
**
176
----------------------------------------------------------------------------*/
121 david 177
 
143 david 178
 
119 david 179
void QmLegTimes::enableStartTime( int state )
180
{
181
    ui->startTime->setEnabled(state);
121 david 182
    updateData();
119 david 183
}
184
 
143 david 185
/*----------------------------------------------------------------------------
186
** FUNCTION           : updateData
187
**
188
** DESCRIPTION        : Indicate that data has changed
189
**                      This will result in all data in all legs being updated
190
**
191
**
192
** INPUTS             :
193
**
194
** RETURNS            :
195
**
196
----------------------------------------------------------------------------*/
197
 
121 david 198
void QmLegTimes::updateData(void)
120 david 199
{
121 david 200
    if ( ! inSetData )
201
    {
177 - 202
        //qDebug("TimeChanged");
121 david 203
        emit dataChanged();
204
    }
120 david 205
}
206
 
143 david 207
/*----------------------------------------------------------------------------
208
** FUNCTION           : changeEvent 
209
**
210
** DESCRIPTION        :
211
**
212
**
213
** INPUTS             :
214
**
215
** RETURNS            :
216
**
217
----------------------------------------------------------------------------*/
118 david 218
 
143 david 219
 
118 david 220
void QmLegTimes::changeEvent(QEvent *e)
221
{
222
    QWidget::changeEvent(e);
223
    switch (e->type()) {
224
    case QEvent::LanguageChange:
225
        ui->retranslateUi(this);
226
        break;
227
    default:
228
        break;
229
    }
230
}