diff options
-rw-r--r-- | device.c | 10 | ||||
-rw-r--r-- | device.h | 2 | ||||
-rw-r--r-- | dive.h | 2 | ||||
-rw-r--r-- | gtk-gui.c | 15 | ||||
-rw-r--r-- | save-xml.c | 33 |
5 files changed, 15 insertions, 47 deletions
@@ -51,16 +51,6 @@ struct device_info *create_device_info(const char *model, uint32_t deviceid) return entry; } -void clear_device_saved_status(void) -{ - struct device_info *nn_entry = device_info_list; - - while (nn_entry) { - nn_entry->saved = FALSE; - nn_entry = nn_entry->next; - } -} - /* do we have a DIFFERENT divecomputer of the same model? */ struct device_info *get_different_device_info(const char *model, uint32_t deviceid) { @@ -9,14 +9,12 @@ struct device_info { const char *firmware; const char *nickname; struct device_info *next; - gboolean saved; }; extern struct device_info *get_device_info(const char *model, uint32_t deviceid); extern struct device_info *get_different_device_info(const char *model, uint32_t deviceid); extern struct device_info *create_device_info(const char *model, uint32_t deviceid); extern struct device_info *remove_device_info(const char *model, uint32_t deviceid); -extern void clear_device_saved_status(void); extern struct device_info *head_of_device_info_list(void); #endif @@ -538,8 +538,6 @@ extern void flush_divelist(struct dive *dive); extern void set_dc_nickname(struct dive *dive); extern const char *get_dc_nickname(const char *model, uint32_t deviceid); extern void remember_dc(const char *model, uint32_t deviceid, const char *nickname, gboolean change_conf); -extern gboolean dc_was_saved(struct divecomputer *dc); -extern void mark_dc_saved(struct divecomputer *dc); extern void set_autogroup(gboolean value); extern int total_weight(struct dive *); @@ -1161,7 +1161,6 @@ static void cell_edited_cb(GtkCellRendererText *cell, gchar *path, holdnicknames->firmware = NULL; holdnicknames->nickname = strdup(new_text); holdnicknames->next = NULL; - holdnicknames->saved = FALSE; } else { struct device_info * top = NULL; struct device_info * last = holdnicknames; @@ -1172,7 +1171,6 @@ static void cell_edited_cb(GtkCellRendererText *cell, gchar *path, top->firmware = NULL; top->nickname = strdup(new_text); top->next = last; - top->saved = FALSE; holdnicknames = top; } } @@ -1921,19 +1919,6 @@ const char *get_dc_nickname(const char *model, uint32_t deviceid) return NULL; } -gboolean dc_was_saved(struct divecomputer *dc) -{ - struct device_info *nn_entry = get_device_info(dc->model, dc->deviceid); - return nn_entry && nn_entry->saved; -} - -void mark_dc_saved(struct divecomputer *dc) -{ - struct device_info *nn_entry = get_device_info(dc->model, dc->deviceid); - if (nn_entry) - nn_entry->saved = TRUE; -} - /* no curly braces or commas, please */ static char *cleanedup_nickname(const char *nickname, int len) { diff --git a/save-xml.c b/save-xml.c index 690a92777..afee34da5 100644 --- a/save-xml.c +++ b/save-xml.c @@ -486,20 +486,14 @@ static void save_trip(FILE *f, dive_trip_t *trip) fprintf(f, "</trip>\n"); } -static void save_dc_if_needed(FILE *f, struct divecomputer *dc) +static void save_one_device(FILE *f, struct device_info *info) { - struct device_info *info = get_device_info(dc->model, dc->deviceid); const char *nickname, *serial_nr, *firmware; - /* we have no dc or no model or no deviceid information... nothing to do here */ - if (!info || info->saved) - return; - info->saved = 1; - /* Nicknames that are empty or the same as the device model are not interesting */ nickname = info->nickname; if (nickname) { - if (!*nickname || !strcmp(dc->model, nickname)) + if (!*nickname || !strcmp(info->model, nickname)) nickname = NULL; } @@ -517,7 +511,7 @@ static void save_dc_if_needed(FILE *f, struct divecomputer *dc) if (!serial_nr && !nickname && !firmware) return; - fprintf(f, "<divecomputerid model='%s' deviceid='%08x'", dc->model, dc->deviceid); + fprintf(f, "<divecomputerid model='%s' deviceid='%08x'", info->model, info->deviceid); if (serial_nr) show_utf8(f, serial_nr, " serial='", "'", 1); if (firmware) @@ -525,7 +519,17 @@ static void save_dc_if_needed(FILE *f, struct divecomputer *dc) if (nickname) show_utf8(f, nickname, " nickname='", "'", 1); fprintf(f, "/>\n"); - return; +} + +static void save_device_info(FILE *f) +{ + struct device_info *info; + + info = head_of_device_info_list(); + while (info) { + save_one_device(f, info); + info = info->next; + } } #define VERSION 2 @@ -547,14 +551,7 @@ void save_dives(const char *filename) fprintf(f, "<divelog program='subsurface' version='%d'>\n<settings>\n", VERSION); /* save the dive computer nicknames, if any */ - clear_device_saved_status(); - for_each_dive(i, dive) { - struct divecomputer *dc = &dive->dc; - while (dc) { - save_dc_if_needed(f, dc); - dc = dc->next; - } - } + save_device_info(f); if (autogroup) fprintf(f, "<autogroup state='1' />\n"); fprintf(f, "</settings>\n<dives>\n"); |