From: Linus Torvalds Date: Thu, 16 Aug 2012 17:28:10 +0000 (-0700) Subject: Merge branch 'suit' of git://git.hohndel.org/subsurface X-Git-Url: http://git.tdb.fi/?p=ext%2Fsubsurface.git;a=commitdiff_plain;h=91e7dcc555ada4fe43198327383e895e528c4cc7;hp=-c Merge branch 'suit' of git://git.hohndel.org/subsurface Pull exposure suit tracking from Dirk Hohndel. * 'suit' of git://git.hohndel.org/subsurface: Add exposure protection tracking --- 91e7dcc555ada4fe43198327383e895e528c4cc7 diff --combined divelist.c index e994b32,8cf0793..36c5883 --- a/divelist.c +++ b/divelist.c @@@ -26,7 -26,7 +26,7 @@@ struct DiveList GtkWidget *container_widget; GtkListStore *model; GtkTreeViewColumn *nr, *date, *stars, *depth, *duration, *location; - GtkTreeViewColumn *temperature, *cylinder, *totalweight, *nitrox, *sac, *otu; + GtkTreeViewColumn *temperature, *cylinder, *totalweight, *suit, *nitrox, *sac, *otu; int changed; }; @@@ -45,6 -45,7 +45,7 @@@ enum DIVE_DURATION, /* int: in seconds */ DIVE_TEMPERATURE, /* int: in mkelvin */ DIVE_TOTALWEIGHT, /* int: in grams */ + DIVE_SUIT, /* "wet, 3mm" */ DIVE_CYLINDER, DIVE_NITROX, /* int: dummy */ DIVE_SAC, /* int: in ml/min */ @@@ -534,6 -535,11 +535,11 @@@ static void get_cylinder(struct dive *d get_string(str, dive->cylinder[0].type.description); } + static void get_suit(struct dive *dive, char **str) + { + get_string(str, dive->suit); + } + /* * Set up anything that could have changed due to editing * of dive information @@@ -542,10 -548,11 +548,11 @@@ static void fill_one_dive(struct dive * GtkTreeModel *model, GtkTreeIter *iter) { - char *location, *cylinder; + char *location, *cylinder, *suit; get_cylinder(dive, &cylinder); get_location(dive, &location); + get_suit(dive, &suit); gtk_list_store_set(GTK_LIST_STORE(model), iter, DIVE_NR, dive->number, @@@ -555,10 -562,11 +562,12 @@@ DIVE_SAC, dive->sac, DIVE_OTU, dive->otu, DIVE_TOTALWEIGHT, total_weight(dive), + DIVE_SUIT, suit, -1); - /* this will create a merge conflict with the memory leak patches */ + free(location); + free(cylinder); + free(suit); } static gboolean set_one_dive(GtkTreeModel *model, @@@ -617,6 -625,7 +626,7 @@@ void update_dive_list_col_visibility(vo gtk_tree_view_column_set_visible(dive_list.cylinder, visible_cols.cylinder); gtk_tree_view_column_set_visible(dive_list.temperature, visible_cols.temperature); gtk_tree_view_column_set_visible(dive_list.totalweight, visible_cols.totalweight); + gtk_tree_view_column_set_visible(dive_list.suit, visible_cols.suit); gtk_tree_view_column_set_visible(dive_list.nitrox, visible_cols.nitrox); gtk_tree_view_column_set_visible(dive_list.sac, visible_cols.sac); gtk_tree_view_column_set_visible(dive_list.otu, visible_cols.otu); @@@ -646,6 -655,7 +656,7 @@@ static void fill_dive_list(void DIVE_LOCATION, "location", DIVE_TEMPERATURE, dive->watertemp.mkelvin, DIVE_TOTALWEIGHT, 0, + DIVE_SUIT, dive->suit, DIVE_SAC, 0, -1); } @@@ -679,6 -689,7 +690,7 @@@ static struct divelist_column [DIVE_DURATION] = { "min", duration_data_func, NULL, ALIGN_RIGHT }, [DIVE_TEMPERATURE] = { UTF8_DEGREE "F", temperature_data_func, NULL, ALIGN_RIGHT, &visible_cols.temperature }, [DIVE_TOTALWEIGHT] = { "lbs", weight_data_func, NULL, ALIGN_RIGHT, &visible_cols.totalweight }, + [DIVE_SUIT] = { "Suit", NULL, NULL, ALIGN_LEFT, &visible_cols.suit }, [DIVE_CYLINDER] = { "Cyl", NULL, NULL, 0, &visible_cols.cylinder }, [DIVE_NITROX] = { "O" UTF8_SUBSCRIPT_2 "%", nitrox_data_func, nitrox_sort_func, 0, &visible_cols.nitrox }, [DIVE_SAC] = { "SAC", sac_data_func, NULL, 0, &visible_cols.sac }, @@@ -786,6 -797,7 +798,7 @@@ GtkWidget *dive_list_create(void G_TYPE_INT, /* Duration */ G_TYPE_INT, /* Temperature */ G_TYPE_INT, /* Total weight */ + G_TYPE_STRING, /* Suit */ G_TYPE_STRING, /* Cylinder */ G_TYPE_INT, /* Nitrox */ G_TYPE_INT, /* SAC */ @@@ -807,6 -819,7 +820,7 @@@ dive_list.duration = divelist_column(&dive_list, dl_column + DIVE_DURATION); dive_list.temperature = divelist_column(&dive_list, dl_column + DIVE_TEMPERATURE); dive_list.totalweight = divelist_column(&dive_list, dl_column + DIVE_TOTALWEIGHT); + dive_list.suit = divelist_column(&dive_list, dl_column + DIVE_SUIT); dive_list.cylinder = divelist_column(&dive_list, dl_column + DIVE_CYLINDER); dive_list.nitrox = divelist_column(&dive_list, dl_column + DIVE_NITROX); dive_list.sac = divelist_column(&dive_list, dl_column + DIVE_SAC); diff --combined info.c index ca53995,09d61c8..a28e793 --- a/info.c +++ b/info.c @@@ -19,9 -19,9 +19,9 @@@ #include "display-gtk.h" #include "divelist.h" - static GtkEntry *location, *buddy, *divemaster, *rating; + static GtkEntry *location, *buddy, *divemaster, *rating, *suit; static GtkTextView *notes; - static GtkListStore *location_list, *people_list, *star_list; + static GtkListStore *location_list, *people_list, *star_list, *suit_list; static char *get_text(GtkTextView *view) { @@@ -96,6 -96,7 +96,7 @@@ void show_dive_info(struct dive *dive SET_TEXT_VALUE(divemaster); SET_TEXT_VALUE(buddy); SET_TEXT_VALUE(location); + SET_TEXT_VALUE(suit); gtk_entry_set_text(rating, star_strings[dive->rating]); gtk_text_buffer_set_text(gtk_text_view_get_buffer(notes), dive && dive->notes ? dive->notes : "", -1); @@@ -242,8 -243,6 +243,8 @@@ static gboolean match_string_entry(GtkT gtk_tree_model_get(model, iter, 0, &entry, -1); cmp = strcmp(entry, string); + if (entry) + free(entry); /* Stop. The entry is bigger than the new one */ if (cmp > 0) @@@ -298,6 -297,11 +299,11 @@@ void add_location(const char *string add_string_list_entry(string, location_list); } + void add_suit(const char *string) + { + add_string_list_entry(string, suit_list); + } + static int get_rating(const char *string) { int rating_val = 0; @@@ -310,7 -314,7 +316,7 @@@ } struct dive_info { - GtkComboBoxEntry *location, *divemaster, *buddy, *rating; + GtkComboBoxEntry *location, *divemaster, *buddy, *rating, *suit; GtkTextView *notes; }; @@@ -338,6 -342,12 +344,12 @@@ static void save_dive_info_changes(stru changed = 1; } + new_text = get_combo_box_entry_text(info->suit, &dive->suit); + if (new_text) { + add_suit(new_text); + changed = 1; + } + rating_string = strdup(star_strings[dive->rating]); new_text = get_combo_box_entry_text(info->rating, &rating_string); if (new_text) { @@@ -380,6 -390,7 +392,7 @@@ static void dive_info_widget(GtkWidget gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, TRUE, 0); info->rating = text_entry(hbox, "Rating", star_list, star_strings[dive->rating]); + info->suit = text_entry(hbox, "Suit", suit_list, dive->suit); info->notes = text_view(box, "Notes", READ_WRITE); if (dive->notes && *dive->notes) @@@ -564,6 -575,7 +577,7 @@@ GtkWidget *extended_dive_info_widget(vo add_string_list_entry(THREE_STARS, star_list); add_string_list_entry(FOUR_STARS, star_list); add_string_list_entry(FIVE_STARS, star_list); + suit_list = gtk_list_store_new(1, G_TYPE_STRING); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); location = text_value(vbox, "Location"); @@@ -578,6 -590,7 +592,7 @@@ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); rating = text_value(hbox, "Rating"); + suit = text_value(hbox, "Suit"); notes = text_view(vbox, "Notes", READ_ONLY); return vbox;