You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
353 lines
6.8 KiB
C++
353 lines
6.8 KiB
C++
#include "cedittasks.h"
|
|
#include "ui_cedittasks.h"
|
|
|
|
CEditTaskS::CEditTaskS(QWidget *parent) :
|
|
QDialog(parent),
|
|
m_ui(new Ui::CEditTaskS)
|
|
{
|
|
m_bChanging = false;
|
|
m_ui->setupUi(this);
|
|
m_ui->m_lpGroupPause->setVisible(false);
|
|
}
|
|
|
|
CEditTaskS::~CEditTaskS()
|
|
{
|
|
delete m_ui;
|
|
}
|
|
|
|
void CEditTaskS::changeEvent(QEvent *e)
|
|
{
|
|
QDialog::changeEvent(e);
|
|
switch (e->type()) {
|
|
case QEvent::LanguageChange:
|
|
m_ui->retranslateUi(this);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void CEditTaskS::on_buttonBox_accepted()
|
|
{
|
|
if(!m_ui->m_lpDesc->text().length())
|
|
{
|
|
MESSAGE(tr("Description is empty!"));
|
|
return;
|
|
}
|
|
if(!m_ui->m_lpHR->currentText().length())
|
|
{
|
|
MESSAGE(tr("No heart rate selected!"));
|
|
return;
|
|
}
|
|
if(m_ui->m_lpCount->value() > 1 && !m_ui->m_lpPauseHR->currentText().length())
|
|
{
|
|
MESSAGE(tr("No pause heart rate selected!"));
|
|
return;
|
|
}
|
|
accept();
|
|
}
|
|
|
|
void CEditTaskS::on_buttonBox_rejected()
|
|
{
|
|
reject();
|
|
}
|
|
|
|
void CEditTaskS::on_m_lpCount_valueChanged(int iCount)
|
|
{
|
|
if(iCount > 1)
|
|
m_ui->m_lpGroupPause->setVisible(true);
|
|
else
|
|
m_ui->m_lpGroupPause->setVisible(false);
|
|
|
|
CalcTotal();
|
|
}
|
|
|
|
QString CEditTaskS::GetDesc()
|
|
{
|
|
return(m_ui->m_lpDesc->text());
|
|
}
|
|
|
|
uint32_t CEditTaskS::GetCount()
|
|
{
|
|
return(m_ui->m_lpCount->value());
|
|
}
|
|
|
|
CTime CEditTaskS::GetTime()
|
|
{
|
|
return(m_ui->m_lpTime->time());
|
|
}
|
|
|
|
uint32_t CEditTaskS::GetDist()
|
|
{
|
|
return(m_ui->m_lpDist->value());
|
|
}
|
|
|
|
QString CEditTaskS::GetHR()
|
|
{
|
|
return(m_ui->m_lpHR->currentText());
|
|
}
|
|
|
|
uint32_t CEditTaskS::GetPace()
|
|
{
|
|
if(!m_ui->m_lpSpeed->value())
|
|
return(0);
|
|
return(3600/m_ui->m_lpSpeed->value());
|
|
}
|
|
|
|
CTime CEditTaskS::GetPauseTime()
|
|
{
|
|
return(m_ui->m_lpPauseTime->time());
|
|
}
|
|
|
|
uint32_t CEditTaskS::GetPauseDist()
|
|
{
|
|
return(m_ui->m_lpPauseDist->value());
|
|
}
|
|
|
|
QString CEditTaskS::GetPauseHR()
|
|
{
|
|
return(m_ui->m_lpPauseHR->currentText());
|
|
}
|
|
|
|
uint32_t CEditTaskS::GetPausePace()
|
|
{
|
|
if(!m_ui->m_lpPauseSpeed->value())
|
|
return(0);
|
|
return(3600/m_ui->m_lpPauseSpeed->value());
|
|
}
|
|
|
|
void CEditTaskS::Set(const QStringList& HRList, const QString& szDesc, uint32_t dwCount, const QTime& Time, uint32_t dwDist, const QString& szHR, uint32_t dwPace, const QTime& PauseTime, uint32_t dwPauseDist, const QString& szPauseHR, uint32_t dwPausePace)
|
|
{
|
|
int i;
|
|
|
|
for(i = 0;i < HRList.size();i++)
|
|
{
|
|
m_ui->m_lpHR->addItem(HRList.at(i));
|
|
m_ui->m_lpPauseHR->addItem(HRList.at(i));
|
|
}
|
|
|
|
m_ui->m_lpDesc->setText(szDesc);
|
|
m_ui->m_lpCount->setValue(dwCount);
|
|
m_ui->m_lpTime->setTime(Time);
|
|
m_ui->m_lpDist->setValue(dwDist);
|
|
m_ui->m_lpHR->setCurrentIndex(m_ui->m_lpHR->findText(szHR));
|
|
if(dwPace)
|
|
m_ui->m_lpSpeed->setValue(3600/dwPace);
|
|
if(dwCount > 1)
|
|
{
|
|
m_ui->m_lpGroupPause->setVisible(true);
|
|
m_ui->m_lpPauseTime->setTime(PauseTime);
|
|
m_ui->m_lpPauseDist->setValue(dwPauseDist);
|
|
m_ui->m_lpPauseHR->setCurrentIndex(m_ui->m_lpHR->findText(szPauseHR));
|
|
if(dwPausePace)
|
|
m_ui->m_lpPauseSpeed->setValue(3600/dwPausePace);
|
|
}
|
|
|
|
CalcTotal();
|
|
}
|
|
|
|
void CEditTaskS::on_m_lpTime_timeChanged(QTime time)
|
|
{
|
|
if(m_bChanging)
|
|
{
|
|
m_bChanging = false;
|
|
return;
|
|
}
|
|
uint32_t dwTime = CTime(time).toDWORD();
|
|
uint32_t dwDist = m_ui->m_lpDist->value();
|
|
uint32_t dwSpeed = m_ui->m_lpSpeed->value();
|
|
|
|
if(!dwTime)
|
|
return;
|
|
|
|
if(dwDist)
|
|
{
|
|
m_bChanging = true;
|
|
dwSpeed = 3600*dwDist/dwTime/1000;
|
|
m_ui->m_lpSpeed->setValue(dwSpeed);
|
|
}
|
|
else if(dwSpeed)
|
|
{
|
|
m_bChanging = true;
|
|
dwDist = dwSpeed*dwTime*1000/3600;
|
|
m_ui->m_lpDist->setValue(dwDist);
|
|
}
|
|
|
|
CalcTotal();
|
|
}
|
|
|
|
void CEditTaskS::on_m_lpDist_valueChanged(int )
|
|
{
|
|
if(m_bChanging)
|
|
{
|
|
m_bChanging = false;
|
|
return;
|
|
}
|
|
uint32_t dwTime = CTime(m_ui->m_lpTime->time()).toDWORD();
|
|
uint32_t dwDist = m_ui->m_lpDist->value();
|
|
uint32_t dwSpeed = m_ui->m_lpSpeed->value();
|
|
|
|
if(!dwDist)
|
|
return;
|
|
|
|
if(dwTime)
|
|
{
|
|
m_bChanging = true;
|
|
dwSpeed = 3600*dwDist/dwTime/1000;
|
|
m_ui->m_lpSpeed->setValue(dwSpeed);
|
|
}
|
|
else if(dwSpeed)
|
|
{
|
|
m_bChanging = true;
|
|
dwDist = dwSpeed*dwTime*1000/3600;
|
|
m_ui->m_lpDist->setValue(dwDist);
|
|
}
|
|
|
|
CalcTotal();
|
|
}
|
|
|
|
void CEditTaskS::on_m_lpSpeed_valueChanged(int speed)
|
|
{
|
|
if(m_bChanging)
|
|
{
|
|
m_bChanging = false;
|
|
return;
|
|
}
|
|
uint32_t dwTime = CTime(m_ui->m_lpTime->time()).toDWORD();
|
|
uint32_t dwDist = m_ui->m_lpDist->value();
|
|
uint32_t dwSpeed = speed;
|
|
|
|
if(!dwSpeed)
|
|
return;
|
|
|
|
if(dwDist)
|
|
{
|
|
m_bChanging = true;
|
|
dwTime = dwDist*3600/dwSpeed/1000;
|
|
m_ui->m_lpTime->setTime(QTime(HOURS(dwTime), MINUTES(dwTime), SECONDS(dwTime)));
|
|
}
|
|
else if(dwTime)
|
|
{
|
|
m_bChanging = true;
|
|
dwDist = dwSpeed*dwTime*1000/3600;
|
|
m_ui->m_lpDist->setValue(dwDist);
|
|
}
|
|
|
|
CalcTotal();
|
|
}
|
|
|
|
void CEditTaskS::on_m_lpPauseTime_timeChanged(QTime time)
|
|
{
|
|
if(m_bChanging)
|
|
{
|
|
m_bChanging = false;
|
|
return;
|
|
}
|
|
uint32_t dwTime = CTime(time).toDWORD();
|
|
uint32_t dwDist = m_ui->m_lpPauseDist->value();
|
|
uint32_t dwSpeed = m_ui->m_lpPauseSpeed->value();
|
|
|
|
if(!dwTime)
|
|
return;
|
|
|
|
if(dwDist)
|
|
{
|
|
m_bChanging = true;
|
|
dwSpeed = 3600*dwDist/dwTime/1000;
|
|
m_ui->m_lpPauseSpeed->setValue(dwSpeed);
|
|
}
|
|
else if(dwSpeed)
|
|
{
|
|
m_bChanging = true;
|
|
dwDist = dwSpeed*dwTime*1000/3600;
|
|
m_ui->m_lpPauseDist->setValue(dwDist);
|
|
}
|
|
|
|
CalcTotal();
|
|
}
|
|
|
|
void CEditTaskS::on_m_lpPauseDist_valueChanged(int )
|
|
{
|
|
if(m_bChanging)
|
|
{
|
|
m_bChanging = false;
|
|
return;
|
|
}
|
|
uint32_t dwTime = CTime(m_ui->m_lpPauseTime->time()).toDWORD();
|
|
uint32_t dwDist = m_ui->m_lpPauseDist->value();
|
|
uint32_t dwSpeed = m_ui->m_lpPauseSpeed->value();
|
|
|
|
if(!dwDist)
|
|
return;
|
|
|
|
if(dwTime)
|
|
{
|
|
m_bChanging = true;
|
|
dwSpeed = 3600*dwDist/dwTime/1000;
|
|
m_ui->m_lpPauseSpeed->setValue(dwSpeed);
|
|
}
|
|
else if(dwSpeed)
|
|
{
|
|
m_bChanging = true;
|
|
dwDist = dwSpeed*dwTime*1000/3600;
|
|
m_ui->m_lpPauseDist->setValue(dwDist);
|
|
}
|
|
|
|
CalcTotal();
|
|
}
|
|
|
|
void CEditTaskS::on_m_lpPauseSpeed_valueChanged(int speed)
|
|
{
|
|
if(m_bChanging)
|
|
{
|
|
m_bChanging = false;
|
|
return;
|
|
}
|
|
uint32_t dwTime = CTime(m_ui->m_lpPauseTime->time()).toDWORD();
|
|
uint32_t dwDist = m_ui->m_lpPauseDist->value();
|
|
uint32_t dwSpeed = speed;
|
|
|
|
if(!dwSpeed)
|
|
return;
|
|
|
|
if(dwDist)
|
|
{
|
|
m_bChanging = true;
|
|
dwTime = dwDist*3600/dwSpeed/1000;
|
|
m_ui->m_lpPauseTime->setTime(QTime(HOURS(dwTime), MINUTES(dwTime), SECONDS(dwTime)));
|
|
}
|
|
else if(dwTime)
|
|
{
|
|
m_bChanging = true;
|
|
dwDist = dwSpeed*dwTime*1000/3600;
|
|
m_ui->m_lpPauseDist->setValue(dwDist);
|
|
}
|
|
|
|
CalcTotal();
|
|
}
|
|
|
|
void CEditTaskS::CalcTotal()
|
|
{
|
|
int iCount = m_ui->m_lpCount->value();
|
|
uint32_t dwTime = CTime(m_ui->m_lpTime->time()).toDWORD();
|
|
uint32_t dwDist = m_ui->m_lpDist->value();
|
|
uint32_t dwPauseTime = CTime(m_ui->m_lpPauseTime->time()).toDWORD();
|
|
uint32_t dwPauseDist = m_ui->m_lpPauseDist->value();
|
|
uint32_t dwTotalTime;
|
|
uint32_t dwTotalDist;
|
|
|
|
dwTotalTime = dwTime*iCount;
|
|
dwTotalDist = dwDist*iCount;
|
|
if(iCount > 1)
|
|
{
|
|
dwTotalTime += dwPauseTime*(iCount-1);
|
|
dwTotalDist += dwPauseDist*(iCount-1);
|
|
}
|
|
m_ui->m_lpTotalDist->setText(QString(tr("%1")).arg(dwTotalDist));
|
|
|
|
uint32_t h = HOURS(dwTotalTime);
|
|
uint32_t m = MINUTES(dwTotalTime);
|
|
uint32_t s = SECONDS(dwTotalTime);
|
|
m_ui->m_lpTotalTime->setTime(QTime(h, m, s));
|
|
}
|