mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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 <torvalds@linux-foundation.org>
This commit is contained in:
parent
dfacb5e124
commit
87e8ff9c3e
3 changed files with 33 additions and 13 deletions
42
divelist.c
42
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);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
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);
|
||||
|
||||
gtk_tree_model_foreach(model, set_one_dive, dive);
|
||||
}
|
||||
|
||||
void update_dive_list_units(struct DiveList *dive_list)
|
||||
|
|
|
@ -11,9 +11,12 @@ struct DiveList {
|
|||
GtkTreeViewColumn *temperature, *nitrox, *sac;
|
||||
};
|
||||
|
||||
struct dive;
|
||||
|
||||
extern struct DiveList dive_list;
|
||||
extern struct DiveList dive_list_create(void);
|
||||
extern void dive_list_update_dives(struct DiveList);
|
||||
extern void update_dive_list_units(struct DiveList *);
|
||||
extern void flush_divelist(struct DiveList *, struct dive *);
|
||||
|
||||
#endif
|
||||
|
|
1
main.c
1
main.c
|
@ -98,6 +98,7 @@ void update_dive(struct dive *new_dive)
|
|||
if (old_dive) {
|
||||
flush_dive_info_changes(old_dive);
|
||||
flush_dive_equipment_changes(old_dive);
|
||||
flush_divelist(&dive_list, old_dive);
|
||||
}
|
||||
if (new_dive) {
|
||||
show_dive_info(new_dive);
|
||||
|
|
Loading…
Add table
Reference in a new issue