X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=main.c;h=5a047bb09a58882244235f6838a409c8ce4e5cff;hb=2804dc42d81a728c62b173f55bbfc075cf643a00;hp=3425cd856a5d520ed89d4792736ca29192bfb9f5;hpb=23c6a42b084fbd1affbf7cc1b3f5e94fb15d3a92;p=ext%2Fsubsurface.git diff --git a/main.c b/main.c index 3425cd8..5a047bb 100644 --- a/main.c +++ b/main.c @@ -1,4 +1,5 @@ #include +#include #include #include @@ -25,7 +26,32 @@ static int sortfn(const void *_a, const void *_b) */ static void report_dives(void) { + int i; + qsort(dive_table.dives, dive_table.nr, sizeof(struct dive *), sortfn); + + for (i = 1; i < dive_table.nr; i++) { + struct dive **pp = &dive_table.dives[i-1]; + struct dive *prev = pp[0]; + struct dive *dive = pp[1]; + struct dive *merged; + + if (prev->when + prev->duration.seconds < dive->when) + continue; + + merged = try_to_merge(prev, dive); + if (!merged) + continue; + + free(prev); + free(dive); + *pp = merged; + dive_table.nr--; + memmove(pp+1, pp+2, sizeof(*pp)*(dive_table.nr - i)); + + /* Redo the new 'i'th dive */ + i--; + } } static void parse_argument(const char *arg) @@ -96,7 +122,7 @@ static void file_save(GtkWidget *w, gpointer data) if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { char *filename; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); - printf("Save: '%s'\n", filename); + save_dives(filename); g_free(filename); } gtk_widget_destroy(dialog); @@ -173,7 +199,8 @@ int main(int argc, char **argv) /* Frame for minimal dive info */ frame = dive_info_frame(); - gtk_table_attach(GTK_TABLE(table), frame, 1, 2, 0, 1, 0, 0, 0, 0); + gtk_table_attach(GTK_TABLE(table), frame, 1, 2, 0, 1, + GTK_FILL | GTK_SHRINK | GTK_EXPAND, 0, 0, 0); /* Notebook for dive info vs profile vs .. */ notebook = gtk_notebook_new();