Fix time string formating

This commit is contained in:
Aurélie Delhaie
2022-10-17 20:03:12 +02:00
parent fd4b766c4d
commit 5515112404
6 changed files with 39 additions and 19 deletions

View File

@@ -28,5 +28,5 @@ void BreakDialog::compute()
bp.setStart(ui->startTime->time()); bp.setStart(ui->startTime->time());
bp.setEnd(ui->endTime->time()); bp.setEnd(ui->endTime->time());
float minutes = bp.getDuration(); float minutes = bp.getDuration();
ui->totalTime->setText(QString("%1 minutes").arg(QString::number(minutes, 'g', 2))); ui->totalTime->setText(Tools::double_to_string_counter(minutes));
} }

View File

@@ -4,6 +4,7 @@
#include <QDialog> #include <QDialog>
#include "models/breakpoint.h" #include "models/breakpoint.h"
#include "tools.h"
namespace Ui { namespace Ui {
class BreakDialog; class BreakDialog;

View File

@@ -234,7 +234,7 @@ void MainWindow::updateDayLabels(QLabel *start, QLabel *end, QLabel *breaks, QFr
if (!d->not_working()) { if (!d->not_working()) {
start->setText(d->get_start().toString("HH:mm")); start->setText(d->get_start().toString("HH:mm"));
end->setText(d->get_end().toString("HH:mm")); end->setText(d->get_end().toString("HH:mm"));
breaks->setText(QString("%1 min.").arg(d->get_time_break())); breaks->setText(Tools::double_to_string_counter(d->get_time_break()));
validate->setVisible(d->get_validate()); validate->setVisible(d->get_validate());
warning->setVisible(d->has_warning()); warning->setVisible(d->has_warning());
} else { } else {

View File

@@ -1,13 +1,42 @@
#include "tools.h" #include "tools.h"
QString Tools::double_to_string_time(double value) { QString Tools::double_to_string_time(double value) {
value = abs(value);
const int h = floor(value); const int h = floor(value);
int m = round((value - h) * 60); int m = round((value - h) * 60);
if (m == 0) { if (m == 0) {
return QString("%1h").arg(QString::number(h)); return QString("%1h").arg(QString::number(h, 10));
} else if (m < 10) { } else if (m < 10) {
return QString("%1h0%2").arg(QString::number(h), QString::number(m)); return QString("%1h0%2").arg(QString::number(h, 10), QString::number(m, 10));
}
return QString("%1h%2").arg(QString::number(h, 10), QString::number(m, 10));
} }
return QString("%1h%2").arg(QString::number(h), QString::number(m)); QString Tools::double_to_string_counter(double value) {
value = abs(value);
const int h = floor(value / 60);
int m = round(value - (60 * h));
if (h == 0) {
return QString("%1 minutes").arg(QString::number(m, 10));
}
if (m == 0) {
return QString("%1 heures").arg(QString::number(h, 10));
} else if (m < 10) {
return QString("%1h0%2").arg(QString::number(h, 10), QString::number(m, 10));
}
return QString("%1h%2").arg(QString::number(h, 10), QString::number(m, 10));
}
QString Tools::int_to_string_time(int value)
{
value = abs(value);
const int h = floor(value / 60);
int m = round(value - (60 * h));
QString minutes = "";
if (m >= 10) {
minutes = QString::number(m, 10);
} else {
minutes = QString("0%1").arg(QString::number(m, 10));
}
return QString("%1h%2").arg(QString::number(h, 10), minutes);
} }

View File

@@ -8,6 +8,8 @@ class Tools
{ {
public: public:
static QString double_to_string_time(double value); static QString double_to_string_time(double value);
static QString double_to_string_counter(double value);
static QString int_to_string_time(int value);
}; };
#endif // TOOLS_H #endif // TOOLS_H

View File

@@ -30,17 +30,5 @@ void WeekOption::set_time_delta(int value)
void WeekOption::compute() void WeekOption::compute()
{ {
int m = this->time_delta; ui->total_label->setText(Tools::int_to_string_time(this->time_delta));
int h = 0;
while (m > 59) {
h++;
m -= 60;
}
QString minutes = "";
if (m >= 10) {
minutes = QString::number(m, 'g', 2);
} else {
minutes = QString("0%1").arg(QString::number(m, 'g', 2));
}
ui->total_label->setText(QString("%1h%2").arg(QString::number(h, 'g', 2), minutes));
} }