/*============================================================================ ** ** Project/Product : ** Filename : qmlegtimes.cpp ** Author(s) : DDP ** ** Description : Display and edit leg time information ** ** ** Information : ** Compiler : ANSI C++ ** Target : ** ***==========================================================================*/ #include "qmlegtimes.h" #include "ui_qmlegtimes.h" /*---------------------------------------------------------------------------- ** FUNCTION : QmLegTimes ** ** DESCRIPTION : Constructor ** ** ** INPUTS : legnum ** name ** parent ** ** RETURNS : ** ----------------------------------------------------------------------------*/ QmLegTimes::QmLegTimes(const int legnum, const QString &name, QWidget *parent) : QWidget(parent), ui(new Ui::QmLegTimes) { ui->setupUi(this); leg = legnum; inSetData = FALSE; ui->legName->setText(name); /* ** Wire up the edit signals ** Leg-0 is special as its all calculated data and not editable */ if ( leg ) { connect( ui->checkBox, SIGNAL(stateChanged(int)), this, SLOT(enableStartTime(int)) ); connect( ui->startTime, SIGNAL(timeChanged(QTime)), this, SLOT(updateData(void)) ); connect( ui->endTime, SIGNAL(timeChanged(QTime)), this, SLOT(updateData(void)) ); } else { ui->checkBox->setEnabled(FALSE); ui->startTime->setEnabled(FALSE); ui->endTime->setEnabled(FALSE); } } /*---------------------------------------------------------------------------- ** FUNCTION : ~QmLegTimes ** ** DESCRIPTION : Descructor ** ** ** INPUTS : ** ** RETURNS : ** ----------------------------------------------------------------------------*/ QmLegTimes::~QmLegTimes() { delete ui; } /*---------------------------------------------------------------------------- ** FUNCTION : cleanPlace ** ** DESCRIPTION : Convert place data to nice text ** ** ** INPUTS : data - Number to process ** ** RETURNS : ** ----------------------------------------------------------------------------*/ QString cleanPlace(int data) { if (data <= 0) return "-"; else return QString::number(data); } /*---------------------------------------------------------------------------- ** FUNCTION : setData ** ** DESCRIPTION : Populate the widget with data from a team entry ** ** ** INPUTS : data - Leg entry to source data from ** ** RETURNS : ** ----------------------------------------------------------------------------*/ void QmLegTimes::setData(leg_type *data) { inSetData = TRUE; if (data->start < 0 ) { ui->startTime->setTime(QTime(0,0,0,0)); } else { ui->startTime->setTime(QTime().addSecs(data->start)); } ui->startTime->setEnabled(data->manual); if ( data->end < 0 ) { ui->endTime->setTime(QTime(0,0,0,0)); } else { ui->endTime->setTime(QTime().addSecs(data->end)); } if ( data->elapsed < 0 ) { ui->elapsedTime->setText(QTime().toString("HH:mm:ss")); } else { ui->elapsedTime->setText(QTime().addSecs(data->elapsed).toString("HH:mm:ss")); } ui->checkBox->setChecked(data->manual); ui->lc_place->setText(cleanPlace(data->lc_place)); ui->le_place->setText(cleanPlace(data->le_place)); ui->l_place->setText(cleanPlace(data->l_place)); ui->lec_place->setText(cleanPlace(data->lec_place)); inSetData = FALSE; } /*---------------------------------------------------------------------------- ** FUNCTION : getData ** ** DESCRIPTION : Return widget data directly into the leg data structure ** ** ** INPUTS : data - ref to target data ** ** RETURNS : ** ----------------------------------------------------------------------------*/ void QmLegTimes::getData(leg_type *data) { data->manual = ui->checkBox->checkState(); data->start = QTime(0,0,0).secsTo(ui->startTime->time()); data->end = QTime(0,0,0).secsTo(ui->endTime->time()); } /*---------------------------------------------------------------------------- ** FUNCTION : enableStartTime ** ** DESCRIPTION : Maintain the state of the starttime widget ** ** ** INPUTS : state - New state ** ** RETURNS : ** ----------------------------------------------------------------------------*/ void QmLegTimes::enableStartTime( int state ) { ui->startTime->setEnabled(state); updateData(); } /*---------------------------------------------------------------------------- ** FUNCTION : updateData ** ** DESCRIPTION : Indicate that data has changed ** This will result in all data in all legs being updated ** ** ** INPUTS : ** ** RETURNS : ** ----------------------------------------------------------------------------*/ void QmLegTimes::updateData(void) { if ( ! inSetData ) { //qDebug("TimeChanged"); emit dataChanged(); } } /*---------------------------------------------------------------------------- ** FUNCTION : changeEvent ** ** DESCRIPTION : ** ** ** INPUTS : ** ** RETURNS : ** ----------------------------------------------------------------------------*/ void QmLegTimes::changeEvent(QEvent *e) { QWidget::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } }