summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--display.h1
-rw-r--r--profile.c2
-rw-r--r--statistics.c25
3 files changed, 19 insertions, 9 deletions
diff --git a/display.h b/display.h
index 83f8ada8f..7153cc0b6 100644
--- a/display.h
+++ b/display.h
@@ -46,6 +46,7 @@ struct graphics_context {
typedef enum { SC_SCREEN, SC_PRINT } scale_mode_t;
extern void plot(struct graphics_context *gc, struct dive *dive, scale_mode_t scale);
+extern struct divecomputer *select_dc(struct divecomputer *main);
extern void init_profile_background(struct graphics_context *gc);
extern void attach_tooltip(int x, int y, int w, int h, const char *text);
extern void get_plot_details(struct graphics_context *gc, int time, char *buf, size_t bufsize);
diff --git a/profile.c b/profile.c
index eecdffe66..2befb4d2c 100644
--- a/profile.c
+++ b/profile.c
@@ -1955,7 +1955,7 @@ static int nr_dcs(struct divecomputer *main)
return i;
}
-static struct divecomputer *select_dc(struct divecomputer *main)
+struct divecomputer *select_dc(struct divecomputer *main)
{
int i = dc_number;
struct divecomputer *dc = main;
diff --git a/statistics.c b/statistics.c
index 5c6777f8a..33789a93d 100644
--- a/statistics.c
+++ b/statistics.c
@@ -525,6 +525,9 @@ static char *get_time_string(int seconds, int maxdays)
return buf;
}
+/* we try to show the data from the currently selected divecomputer
+ * right now for some values (e.g., surface pressure) we could fall back
+ * to dive data, but for consistency we don't. */
static void show_single_dive_stats(struct dive *dive)
{
char buf[80];
@@ -534,10 +537,12 @@ static void show_single_dive_stats(struct dive *dive)
int idx, offset, gas_used, mbar;
struct dive *prev_dive;
struct tm tm;
+ struct divecomputer *dc;
process_all_dives(dive, &prev_dive);
if (!dive)
return;
+ dc = select_dc(&dive->dc);
utc_mkdate(dive->when, &tm);
snprintf(buf, sizeof(buf),
/*++GETTEXT 80 chars: weekday, monthname, day, year, hour, min */
@@ -554,28 +559,32 @@ static void show_single_dive_stats(struct dive *dive)
get_time_string(dive->when - (prev_dive->when + get_duration_in_sec(prev_dive)), 4));
else
set_label(single_w.surf_intv, _("unknown"));
- value = get_depth_units(dive->maxdepth.mm, &decimals, &unit);
+ value = get_depth_units(dc->maxdepth.mm, &decimals, &unit);
set_label(single_w.max_depth, "%.*f %s", decimals, value, unit);
- value = get_depth_units(dive->dc.meandepth.mm, &decimals, &unit);
+ value = get_depth_units(dc->meandepth.mm, &decimals, &unit);
set_label(single_w.avg_depth, "%.*f %s", decimals, value, unit);
set_label(single_w.viz, star_strings[dive->visibility]);
- if (dive->dc.watertemp.mkelvin) {
- value = get_temp_units(dive->dc.watertemp.mkelvin, &unit);
+ if (dc->watertemp.mkelvin) {
+ value = get_temp_units(dc->watertemp.mkelvin, &unit);
set_label(single_w.water_temp, "%.1f %s", value, unit);
} else {
set_label(single_w.water_temp, "");
}
- if (dive->dc.airtemp.mkelvin) {
- value = get_temp_units(dive->dc.airtemp.mkelvin, &unit);
+ if (dc->airtemp.mkelvin) {
+ value = get_temp_units(dc->airtemp.mkelvin, &unit);
set_label(single_w.air_temp, "%.1f %s", value, unit);
} else {
set_label(single_w.air_temp, "");
}
- mbar = get_surface_pressure_in_mbar(dive, FALSE);
+ mbar = dc->surface_pressure.mbar;
+ /* it would be easy to get dive data here:
+ * if (!mbar)
+ * mbar = get_surface_pressure_in_mbar(dive, FALSE);
+ */
if (mbar) {
set_label(single_w.air_press, "%d mbar", mbar);
} else {
- set_label(single_w.air_press, _("unknown"));
+ set_label(single_w.air_press, "");
}
value = get_volume_units(dive->sac, &decimals, &unit);
if (value > 0)