From 87e8ff9c3e16e2786a9ba9d551e52cd8b9dd9728 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Mon, 19 Sep 2011 16:41:56 -0700 Subject: Update the divelist when dive info changes This flushes the dive changes to the dive list, the way the old dive info frame would update as you update dive fields. Signed-off-by: Linus Torvalds --- divelist.c | 42 +++++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-) (limited to 'divelist.c') diff --git a/divelist.c b/divelist.c index d215fd236..9c1510664 100644 --- a/divelist.c +++ b/divelist.c @@ -232,23 +232,14 @@ static void get_sac(struct dive *dive, int *val, char **str) *str = strdup(buffer); } -static gboolean set_one_dive(GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer data) +static void fill_one_dive(struct dive *dive, + GtkTreeModel *model, + GtkTreeIter *iter) { - GValue value = {0, }; - struct dive *dive; int date, depth, duration, temp, nitrox, sac; char *datestr, *depthstr, *durationstr, *tempstr, *nitroxstr, *sacstr; char *location; - /* Get the dive number */ - gtk_tree_model_get_value(model, iter, DIVE_INDEX, &value); - dive = get_dive(g_value_get_int(&value)); - if (!dive) - return TRUE; - get_date(dive, &date, &datestr); get_depth(dive, &depth, &depthstr); get_duration(dive, &duration, &durationstr); @@ -273,8 +264,33 @@ static gboolean set_one_dive(GtkTreeModel *model, DIVE_SACSTR, sacstr, DIVE_SAC, sac, -1); +} + +static gboolean set_one_dive(GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + gpointer data) +{ + GValue value = {0, }; + struct dive *dive; + + /* Get the dive number */ + gtk_tree_model_get_value(model, iter, DIVE_INDEX, &value); + dive = get_dive(g_value_get_int(&value)); + if (!dive) + return TRUE; + if (data && dive != data) + return FALSE; + + fill_one_dive(dive, model, iter); + return dive == data; +} + +void flush_divelist(struct DiveList *dive_list, struct dive *dive) +{ + GtkTreeModel *model = GTK_TREE_MODEL(dive_list->model); - return FALSE; + gtk_tree_model_foreach(model, set_one_dive, dive); } void update_dive_list_units(struct DiveList *dive_list) -- cgit v1.2.3-70-g09d2