]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Generate date string for the dive list dynamically
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 4 Sep 2011 19:09:48 +0000 (12:09 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 4 Sep 2011 19:19:20 +0000 (12:19 -0700)
.. and sort based on the 'time_t' value itself.

This allows us to use a more compact date format that doesn't need to
sort alphabetically, because sorting by date is always based on the date
value.  So we can use just a two-digit year, and skip the seconds, to
keep the column narrow, while still sorting correctly.

Also, "Depth" is a nice header string, but it is wider than the column
itself, which makes the whole column wider than necessary.  So put the
units in the header instead of in the string, keeping things narrow.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
dive.c
dive.h
divelist.c
parse-xml.c

diff --git a/dive.c b/dive.c
index 757622fe7076cf10a43a70aa9b1ec6facd5fc816..5ddb6bc8087faae233843dc46683382934fe6792 100644 (file)
--- a/dive.c
+++ b/dive.c
@@ -253,7 +253,6 @@ struct dive *try_to_merge(struct dive *a, struct dive *b)
        memset(res, 0, dive_size(alloc_samples));
 
        res->when = a->when;
-       res->name = merge_text(a->name, b->name);
        res->location = merge_text(a->location, b->location);
        res->notes = merge_text(a->notes, b->notes);
        MERGE_MAX(res, a, b, maxdepth.mm);
diff --git a/dive.h b/dive.h
index 2d03ee7cd7d0db4c364ed51a9a1fd1cee37e2c94..1386a3bf8d8b7a999e08bcf4fcb6b99faeae47e5 100644 (file)
--- a/dive.h
+++ b/dive.h
@@ -111,7 +111,6 @@ struct sample {
 #define MAX_CYLINDERS (4)
 
 struct dive {
-       const char *name;
        time_t when;
        char *location;
        char *notes;
index 5baf589d33d8c265ecfd5b76d9f7c3743893dadf..1970b38ab4d0044bd601a80b49b0337a29e50dba 100644 (file)
@@ -14,7 +14,7 @@ static void selection_cb(GtkTreeSelection *selection, GtkTreeModel *model)
        if (!gtk_tree_selection_get_selected(selection, NULL, &iter))
                return;
 
-       gtk_tree_model_get_value(model, &iter, 5, &value);
+       gtk_tree_model_get_value(model, &iter, 6, &value);
        selected_dive = g_value_get_int(&value);
        repaint_dive();
 }
@@ -28,26 +28,36 @@ static void fill_dive_list(GtkListStore *store)
                struct dive *dive = dive_table.dives[i];
 
                int len;
-               char buffer[256], *depth, *duration;
+               char buffer[256], *datestr, *depth, *duration;
+               struct tm *tm;
                
+               tm = gmtime(&dive->when);
                len = snprintf(buffer, sizeof(buffer),
-                              "%d ft", to_feet(dive->maxdepth));
+                       "%02d.%02d.%02d %02d:%02d",
+                       tm->tm_mday, tm->tm_mon+1, tm->tm_year % 100,
+                       tm->tm_hour, tm->tm_min);
+               datestr = malloc(len+1);
+               memcpy(datestr, buffer, len+1);
+
+               len = snprintf(buffer, sizeof(buffer),
+                              "%d", to_feet(dive->maxdepth));
                depth = malloc(len + 1);
                memcpy(depth, buffer, len+1);
                
                len = snprintf(buffer, sizeof(buffer),
-                              "%d min", dive->duration.seconds / 60);
+                              "%d", dive->duration.seconds / 60);
                duration = malloc(len + 1);
                memcpy(duration, buffer, len+1);
 
                gtk_list_store_append(store, &iter);
                gtk_list_store_set(store, &iter,
-                       0, dive->name,
-                       1, depth,
-                       2, dive->maxdepth,
-                       3, duration,
-                       4, dive->duration.seconds,
-                       5, i,
+                       0, datestr,
+                       1, dive->when,
+                       2, depth,
+                       3, dive->maxdepth,
+                       4, duration,
+                       5, dive->duration.seconds,
+                       6, i,
                        -1);
        }
 }
@@ -61,7 +71,8 @@ GtkWidget *create_dive_list(void)
        GtkTreeViewColumn *col;
        GtkWidget         *scroll_window;
 
-       model = gtk_list_store_new(6, G_TYPE_STRING,
+       model = gtk_list_store_new(7,
+                                  G_TYPE_STRING, G_TYPE_INT,
                                   G_TYPE_STRING, G_TYPE_INT, 
                                   G_TYPE_STRING, G_TYPE_INT,
                                   G_TYPE_INT);
@@ -75,8 +86,8 @@ GtkWidget *create_dive_list(void)
 
        renderer = gtk_cell_renderer_text_new();
        col = gtk_tree_view_column_new();
-       gtk_tree_view_column_set_title(col, "Name");
-       gtk_tree_view_column_set_sort_column_id(col, 0);
+       gtk_tree_view_column_set_title(col, "Date");
+       gtk_tree_view_column_set_sort_column_id(col, 1);
        gtk_tree_view_column_set_resizable (col, TRUE);
        gtk_tree_view_column_pack_start(col, renderer, TRUE);
        gtk_tree_view_column_add_attribute(col, renderer, "text", 0);
@@ -84,18 +95,18 @@ GtkWidget *create_dive_list(void)
        
        renderer = gtk_cell_renderer_text_new();
        col = gtk_tree_view_column_new();
-       gtk_tree_view_column_set_title(col, "Depth");
-       gtk_tree_view_column_set_sort_column_id(col, 2);
+       gtk_tree_view_column_set_title(col, "ft");
+       gtk_tree_view_column_set_sort_column_id(col, 3);
        gtk_tree_view_column_pack_start(col, renderer, TRUE);
-       gtk_tree_view_column_add_attribute(col, renderer, "text", 1);
+       gtk_tree_view_column_add_attribute(col, renderer, "text", 2);
        gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), col);
        
        renderer = gtk_cell_renderer_text_new();
        col = gtk_tree_view_column_new();
-       gtk_tree_view_column_set_title(col, "Duration");
-       gtk_tree_view_column_set_sort_column_id(col, 4);
+       gtk_tree_view_column_set_title(col, "min");
+       gtk_tree_view_column_set_sort_column_id(col, 5);
        gtk_tree_view_column_pack_start(col, renderer, TRUE);
-       gtk_tree_view_column_add_attribute(col, renderer, "text", 3);
+       gtk_tree_view_column_add_attribute(col, renderer, "text", 4);
        gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), col);
 
        g_object_set(G_OBJECT(tree_view), "headers-visible", TRUE,
index a2c685ed523ed39b2b9b692f92760d175e4a61a3..3221111c748bf37ec9825533b6df8e79a7ce9f39 100644 (file)
@@ -683,26 +683,6 @@ static void dive_start(void)
        memset(&tm, 0, sizeof(tm));
 }
 
-static char *generate_name(struct dive *dive)
-{
-       int len;
-       struct tm *tm;
-       char buffer[256], *p;
-
-       tm = gmtime(&dive->when);
-
-       len = snprintf(buffer, sizeof(buffer),
-               "%04d-%02d-%02d "
-               "%02d:%02d:%02d",
-               tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
-               tm->tm_hour, tm->tm_min, tm->tm_sec);
-       p = malloc(len+1);
-       if (!p)
-               exit(1);
-       memcpy(p, buffer, len+1);
-       return p;
-}
-
 static void sanitize_gasmix(gasmix_t *mix)
 {
        unsigned int o2, he;
@@ -770,8 +750,6 @@ static void dive_end(void)
 {
        if (!dive)
                return;
-       if (!dive->name)
-               dive->name = generate_name(dive);
        sanitize_cylinder_info(dive);
        record_dive(dive);
        dive = NULL;