diff options
author | 2011-11-02 12:39:55 -0700 | |
---|---|---|
committer | 2011-11-02 12:39:55 -0700 | |
commit | 55352a051cfa7ac519e397cd3d18851e5050517b (patch) | |
tree | 8d42a09d66212b84f992c8d3ce6b8e341cdac94a /divelist.c | |
parent | e4bfb6597279ca3d9aa3678a617f5f0aef298278 (diff) | |
parent | 619ab9e828d4db7b0c4089018b09892c9d04ece9 (diff) | |
download | subsurface-55352a051cfa7ac519e397cd3d18851e5050517b.tar.gz |
Merge branch 'add-info-stats-page' of git://github.com/dirkhh/subsurface
* 'add-info-stats-page' of git://github.com/dirkhh/subsurface:
Add Info & Stats page to the notebook
Even more places with pressure and volume conversions
Further cleanup of pressure and volume conversions
Use unit functions to get column headers, add unit function for pressure
More consistency improvements
Add new helper function to get temperature and unit
Diffstat (limited to 'divelist.c')
-rw-r--r-- | divelist.c | 40 |
1 files changed, 10 insertions, 30 deletions
diff --git a/divelist.c b/divelist.c index 3ddfb6582..2d04eb5b0 100644 --- a/divelist.c +++ b/divelist.c @@ -223,7 +223,6 @@ static void sac_data_func(GtkTreeViewColumn *col, gpointer data) { int value; - const double liters_per_cuft = 28.317; const char *fmt; char buffer[16]; double sac; @@ -242,7 +241,7 @@ static void sac_data_func(GtkTreeViewColumn *col, break; case CUFT: fmt = "%4.2f"; - sac /= liters_per_cuft; + sac = ml_to_cuft(sac * 1000); break; } snprintf(buffer, sizeof(buffer), fmt, sac); @@ -307,7 +306,7 @@ static double calculate_airuse(struct dive *dive) if (!size) continue; - kilo_atm = (cyl->start.mbar - cyl->end.mbar) / 1013250.0; + kilo_atm = (to_ATM(cyl->start) - to_ATM(cyl->end)) / 1000.0; /* Liters of air at 1 atm == milliliters at 1k atm*/ airuse += kilo_atm * size; @@ -315,23 +314,22 @@ static double calculate_airuse(struct dive *dive) return airuse; } -static void get_sac(struct dive *dive, int *val) +static int calculate_sac(struct dive *dive) { double airuse, pressure, sac; - *val = 0; airuse = calculate_airuse(dive); if (!airuse) - return; + return 0; if (!dive->duration.seconds) - return; + return 0; /* Mean pressure in atm: 1 atm per 10m */ pressure = 1 + (dive->meandepth.mm / 10000.0); sac = airuse / pressure * 60 / dive->duration.seconds; /* milliliters per minute.. */ - *val = sac * 1000; + return sac * 1000; } static void get_string(char **str, const char *s) @@ -364,12 +362,10 @@ static void fill_one_dive(struct dive *dive, GtkTreeModel *model, GtkTreeIter *iter) { - int sac; char *location, *cylinder; get_cylinder(dive, &cylinder); get_location(dive, &location); - get_sac(dive, &sac); /* * We only set the fields that changed: the strings. @@ -379,7 +375,7 @@ static void fill_one_dive(struct dive *dive, DIVE_NR, dive->number, DIVE_LOCATION, location, DIVE_CYLINDER, cylinder, - DIVE_SAC, sac, + DIVE_SAC, dive->sac, DIVE_OTU, dive->otu, -1); } @@ -423,27 +419,10 @@ void update_dive_list_units(void) const char *unit; GtkTreeModel *model = GTK_TREE_MODEL(dive_list.model); - switch (output_units.length) { - case METERS: - unit = "m"; - break; - case FEET: - unit = "ft"; - break; - } + (void) get_depth_units(0, NULL, &unit); gtk_tree_view_column_set_title(dive_list.depth, unit); - switch (output_units.temperature) { - case CELSIUS: - unit = UTF8_DEGREE "C"; - break; - case FAHRENHEIT: - unit = UTF8_DEGREE "F"; - break; - case KELVIN: - unit = "Kelvin"; - break; - } + (void) get_temp_units(0, &unit); gtk_tree_view_column_set_title(dive_list.temperature, unit); gtk_tree_model_foreach(model, set_one_dive, NULL); @@ -471,6 +450,7 @@ static void fill_dive_list(void) struct dive *dive = dive_table.dives[i]; dive->otu = calculate_otu(dive); + dive->sac = calculate_sac(dive); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, DIVE_INDEX, i, |