From 55151124046b92bfb815124c3f71a23f9c542365 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lie=20Delhaie?= Date: Mon, 17 Oct 2022 20:03:12 +0200 Subject: [PATCH] Fix time string formating --- sources/breakdialog.cpp | 2 +- sources/breakdialog.h | 1 + sources/mainwindow.cpp | 2 +- sources/tools.cpp | 37 +++++++++++++++++++++++++++++++++---- sources/tools.h | 2 ++ sources/weekoption.cpp | 14 +------------- 6 files changed, 39 insertions(+), 19 deletions(-) diff --git a/sources/breakdialog.cpp b/sources/breakdialog.cpp index 22832b0..71f5eeb 100644 --- a/sources/breakdialog.cpp +++ b/sources/breakdialog.cpp @@ -28,5 +28,5 @@ void BreakDialog::compute() bp.setStart(ui->startTime->time()); bp.setEnd(ui->endTime->time()); 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)); } diff --git a/sources/breakdialog.h b/sources/breakdialog.h index 98fb443..2561a22 100644 --- a/sources/breakdialog.h +++ b/sources/breakdialog.h @@ -4,6 +4,7 @@ #include #include "models/breakpoint.h" +#include "tools.h" namespace Ui { class BreakDialog; diff --git a/sources/mainwindow.cpp b/sources/mainwindow.cpp index a8dc2b8..7835277 100644 --- a/sources/mainwindow.cpp +++ b/sources/mainwindow.cpp @@ -234,7 +234,7 @@ void MainWindow::updateDayLabels(QLabel *start, QLabel *end, QLabel *breaks, QFr if (!d->not_working()) { start->setText(d->get_start().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()); warning->setVisible(d->has_warning()); } else { diff --git a/sources/tools.cpp b/sources/tools.cpp index 5ef19e4..6f59b22 100644 --- a/sources/tools.cpp +++ b/sources/tools.cpp @@ -1,13 +1,42 @@ #include "tools.h" QString Tools::double_to_string_time(double value) { + value = abs(value); const int h = floor(value); int m = round((value - h) * 60); if (m == 0) { - return QString("%1h").arg(QString::number(h)); + return QString("%1h").arg(QString::number(h, 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), QString::number(m)); + return QString("%1h%2").arg(QString::number(h, 10), QString::number(m, 10)); +} + +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); } diff --git a/sources/tools.h b/sources/tools.h index f317151..35201a2 100644 --- a/sources/tools.h +++ b/sources/tools.h @@ -8,6 +8,8 @@ class Tools { public: 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 diff --git a/sources/weekoption.cpp b/sources/weekoption.cpp index 47e7be9..e7aaa93 100644 --- a/sources/weekoption.cpp +++ b/sources/weekoption.cpp @@ -30,17 +30,5 @@ void WeekOption::set_time_delta(int value) void WeekOption::compute() { - int m = 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)); + ui->total_label->setText(Tools::int_to_string_time(this->time_delta)); }