Do output unit conversion in the dive info window too

This should take care of it all, unless I missed some case.

Now we should just save the default units somewhere, and I should do the
divelist update much cleaner (instead of re-doing the divelist entirely,
it should just repaint it - now we lose the highlited dive etc).

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Linus Torvalds 2011-09-07 09:35:45 -07:00
parent fdbd80a3a2
commit c4d5ebb069
2 changed files with 46 additions and 8 deletions

16
dive.h
View file

@ -95,7 +95,21 @@ static inline int to_C(temperature_t temp)
{
if (!temp.mkelvin)
return 0;
return (temp.mkelvin - 273150) / 1000;
return (temp.mkelvin - 273150 + 499) / 1000;
}
static inline int to_F(temperature_t temp)
{
if (!temp.mkelvin)
return 0;
return temp.mkelvin * 9 / 5000.0 - 459.670 + 0.5;
}
static inline int to_K(temperature_t temp)
{
if (!temp.mkelvin)
return 0;
return (temp.mkelvin + 499)/1000;
}
static inline int to_PSI(pressure_t pressure)

38
info.c
View file

@ -78,9 +78,18 @@ void update_dive_info(struct dive *dive)
tm->tm_hour, tm->tm_min, tm->tm_sec);
gtk_label_set_text(GTK_LABEL(divetime), buffer);
snprintf(buffer, sizeof(buffer),
"%d ft",
to_feet(dive->maxdepth));
switch (output_units.length) {
case METERS:
snprintf(buffer, sizeof(buffer),
"%.1f m",
dive->maxdepth.mm / 1000.0);
break;
case FEET:
snprintf(buffer, sizeof(buffer),
"%d ft",
to_feet(dive->maxdepth));
break;
}
gtk_label_set_text(GTK_LABEL(depth), buffer);
snprintf(buffer, sizeof(buffer),
@ -89,10 +98,25 @@ void update_dive_info(struct dive *dive)
gtk_label_set_text(GTK_LABEL(duration), buffer);
*buffer = 0;
if (dive->watertemp.mkelvin)
snprintf(buffer, sizeof(buffer),
"%d C",
to_C(dive->watertemp));
if (dive->watertemp.mkelvin) {
switch (output_units.temperature) {
case CELSIUS:
snprintf(buffer, sizeof(buffer),
"%d C",
to_C(dive->watertemp));
break;
case FAHRENHEIT:
snprintf(buffer, sizeof(buffer),
"%d F",
to_F(dive->watertemp));
break;
case KELVIN:
snprintf(buffer, sizeof(buffer),
"%d K",
to_K(dive->watertemp));
break;
}
}
gtk_label_set_text(GTK_LABEL(temperature), buffer);
text = dive->location ? : "";