diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-09-07 09:35:45 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-09-07 09:35:45 -0700 |
commit | c4d5ebb069d41f143d829da26693a72152809f20 (patch) | |
tree | 9b5e9ce6333ad74f144fa2cf168c160f4f73a276 | |
parent | fdbd80a3a2e7185b931de139e043304ec5977350 (diff) | |
download | subsurface-c4d5ebb069d41f143d829da26693a72152809f20.tar.gz |
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>
-rw-r--r-- | dive.h | 16 | ||||
-rw-r--r-- | info.c | 38 |
2 files changed, 46 insertions, 8 deletions
@@ -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) @@ -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 ? : ""; |