]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Add OTU to divelist
authorDirk Hohndel <dirk@hohndel.org>
Thu, 22 Sep 2011 21:02:26 +0000 (14:02 -0700)
committerDirk Hohndel <dirk@hohndel.org>
Thu, 22 Sep 2011 23:29:49 +0000 (16:29 -0700)
and change OTUs to be tracked as int, not double

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
dive.h
divelist.c

diff --git a/dive.h b/dive.h
index 1766cff8203ef2cb38a465f6f90aa403709b97d8..5cb32412308ee2219efa8f1c2e5faabeadfc5ab1 100644 (file)
--- a/dive.h
+++ b/dive.h
@@ -161,7 +161,7 @@ struct dive {
        depth_t visibility;
        temperature_t airtemp, watertemp;
        cylinder_t cylinder[MAX_CYLINDERS];
-       double otu;
+       int otu;
        int samples, alloc_samples;
        struct sample sample[];
 };
index c2194bbec06b52ddfe7d3888e65bc53ef19274fe..13257a437173672cb21b67da32a9657b54ea066d 100644 (file)
@@ -45,6 +45,7 @@ enum {
        DIVE_CYLINDER,
        DIVE_NITROX,            /* int: in permille */
        DIVE_SAC,               /* int: in ml/min */
+       DIVE_OTU,               /* int: in OTUs */
        DIVE_LOCATION,          /* "2nd Cathedral, Lanai" */
        DIVELIST_COLUMNS
 };
@@ -223,8 +224,30 @@ static void sac_data_func(GtkTreeViewColumn *col,
        g_object_set(renderer, "text", buffer, NULL);
 }
 
+/* Render the OTU data (integer value of "OTU") */
+static void otu_data_func(GtkTreeViewColumn *col,
+                         GtkCellRenderer *renderer,
+                         GtkTreeModel *model,
+                         GtkTreeIter *iter,
+                         gpointer data)
+{
+       int value;
+       char buffer[16];
+
+       gtk_tree_model_get(model, iter, DIVE_OTU, &value, -1);
+
+       if (!value) {
+               g_object_set(renderer, "text", "", NULL);
+               return;
+       }
+
+       snprintf(buffer, sizeof(buffer), "%d", value);
+
+       g_object_set(renderer, "text", buffer, NULL);
+}
+
 /* calculate OTU for a dive */
-static double calculate_otu(struct dive *dive)
+static int calculate_otu(struct dive *dive)
 {
        int i;
        double otu = 0.0;
@@ -240,7 +263,7 @@ static double calculate_otu(struct dive *dive)
                if (po2 >= 0.5)
                        otu += pow(po2 - 0.5, 0.83) * t / 30.0;
        }
-       return otu;
+       return otu + 0.5;
 }
 /*
  * Return air usage (in liters).
@@ -330,6 +353,7 @@ static void fill_one_dive(struct dive *dive,
                DIVE_LOCATION, location,
                DIVE_CYLINDER, cylinder,
                DIVE_SAC, sac,
+               DIVE_OTU, dive->otu,
                -1);
 }
 
@@ -501,6 +525,7 @@ GtkWidget *dive_list_create(void)
                                G_TYPE_STRING,                  /* Cylinder */
                                G_TYPE_INT,                     /* Nitrox */
                                G_TYPE_INT,                     /* SAC */
+                               G_TYPE_INT,                     /* OTU */
                                G_TYPE_STRING                   /* Location */
                                );
        dive_list.tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(dive_list.model));
@@ -511,14 +536,15 @@ GtkWidget *dive_list_create(void)
        gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_BROWSE);
        gtk_widget_set_size_request(dive_list.tree_view, 200, 200);
 
-       dive_list.date = divelist_column(&dive_list, DIVE_DATE, "Date", date_data_func, PANGO_ALIGN_LEFT);
-       dive_list.depth = divelist_column(&dive_list, DIVE_DEPTH, "ft", depth_data_func, PANGO_ALIGN_RIGHT);
-       dive_list.duration = divelist_column(&dive_list, DIVE_DURATION, "min", duration_data_func, PANGO_ALIGN_RIGHT);
-       dive_list.temperature = divelist_column(&dive_list, DIVE_TEMPERATURE, UTF8_DEGREE "F", temperature_data_func, PANGO_ALIGN_RIGHT);
-       dive_list.cylinder = divelist_column(&dive_list, DIVE_CYLINDER, "Cyl", NULL, PANGO_ALIGN_CENTER);
-       dive_list.nitrox = divelist_column(&dive_list, DIVE_NITROX, "O" UTF8_SUBSCRIPT_2 "%", nitrox_data_func, PANGO_ALIGN_CENTER);
-       dive_list.sac = divelist_column(&dive_list, DIVE_SAC, "SAC", sac_data_func, PANGO_ALIGN_CENTER);
-       dive_list.location = divelist_column(&dive_list, DIVE_LOCATION, "Location", NULL, PANGO_ALIGN_LEFT);
+       dive_list.date = divelist_column(&dive_list, DIVE_DATE, "Date", date_data_func, PANGO_ALIGN_LEFT, TRUE);
+       dive_list.depth = divelist_column(&dive_list, DIVE_DEPTH, "ft", depth_data_func, PANGO_ALIGN_RIGHT, TRUE);
+       dive_list.duration = divelist_column(&dive_list, DIVE_DURATION, "min", duration_data_func, PANGO_ALIGN_RIGHT, TRUE);
+       dive_list.temperature = divelist_column(&dive_list, DIVE_TEMPERATURE, UTF8_DEGREE "F", temperature_data_func, PANGO_ALIGN_RIGHT, TRUE);
+       dive_list.cylinder = divelist_column(&dive_list, DIVE_CYLINDER, "Cyl", NULL, PANGO_ALIGN_CENTER, TRUE);
+       dive_list.nitrox = divelist_column(&dive_list, DIVE_NITROX, "O" UTF8_SUBSCRIPT_2 "%", nitrox_data_func, PANGO_ALIGN_CENTER, TRUE);
+       dive_list.sac = divelist_column(&dive_list, DIVE_SAC, "SAC", sac_data_func, PANGO_ALIGN_CENTER, TRUE);
+       dive_list.sac = divelist_column(&dive_list, DIVE_OTU, "OTU", otu_data_func, PANGO_ALIGN_CENTER, FALSE);
+       dive_list.location = divelist_column(&dive_list, DIVE_LOCATION, "Location", NULL, PANGO_ALIGN_LEFT, TRUE);
 
        fill_dive_list();