core: introduce a few user-defined literals for unit types

Thise makes initialization of unit types more palatable.

For example:

    surface.time = sample.time - duration_t { .seconds = 20 };
=>  surface.time = sample.time - 20_sec;

    delta_depth.mm = feet_to_mm(1.0); // 1ft
=>  delta_depth = 1_ft;

    get_cylinderid_at_time(..., { .seconds = 20 * 60 + 1 }));
=>  get_cylinderid_at_time(..., 20_min + 1_sec));

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2024-09-03 17:04:48 +02:00 committed by bstoeger
parent f09601bc93
commit ae81b42fe2
36 changed files with 320 additions and 264 deletions

View file

@ -149,7 +149,6 @@ void DivePlannerPointsModel::loadFromDive(dive *dIn, int dcNrIn)
int j = 0;
int cylinderid = 0;
last_sp.mbar = 0;
divemode_loop loop(*dc);
for (int i = 0; i < plansamples - 1; i++) {
if (dc->last_manual_time.seconds && dc->last_manual_time.seconds > 120 && lasttime.seconds >= dc->last_manual_time.seconds)
@ -216,7 +215,7 @@ void DivePlannerPointsModel::setupCylinders()
bool DivePlannerPointsModel::updateMaxDepth()
{
int prevMaxDepth = d->maxdepth.mm;
d->maxdepth.mm = 0;
d->maxdepth = 0_m;
for (int i = 0; i < rowCount(); i++) {
divedatapoint p = at(i);
if (p.depth.mm > d->maxdepth.mm)
@ -1069,7 +1068,7 @@ bool DivePlannerPointsModel::tankInUse(int cylinderid) const
void DivePlannerPointsModel::clear()
{
cylinders.clear();
preserved_until.seconds = 0;
preserved_until = 0_sec;
beginResetModel();
divepoints.clear();
endResetModel();
@ -1223,16 +1222,16 @@ void DivePlannerPointsModel::computeVariations(std::unique_ptr<struct diveplan>
int my_instance = ++instanceCounter;
save.cache(&ds);
duration_t delta_time = { .seconds = 60 };
duration_t delta_time = 1_min;
QString time_units = tr("min");
depth_t delta_depth;
QString depth_units;
if (prefs.units.length == units::METERS) {
delta_depth.mm = 1000; // 1m
delta_depth = 1_m;
depth_units = tr("m");
} else {
delta_depth.mm = feet_to_mm(1.0); // 1ft
delta_depth = 1_ft;
depth_units = tr("ft");
}