aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qt-ui/models.cpp14
-rw-r--r--save-xml.c21
2 files changed, 21 insertions, 14 deletions
diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp
index 76ad6e1e5..b8909dadf 100644
--- a/qt-ui/models.cpp
+++ b/qt-ui/models.cpp
@@ -543,20 +543,16 @@ void WeightModel::setDive(dive* d)
{
if (current)
clear();
-
- int amount = MAX_WEIGHTSYSTEMS;
+ rows = 0;
for(int i = 0; i < MAX_WEIGHTSYSTEMS; i++) {
- weightsystem_t *weightsystem = &d->weightsystem[i];
- if (weightsystem_none(weightsystem)) {
- amount = i;
- break;
+ if (!weightsystem_none(&d->weightsystem[i])) {
+ rows = i+1;
}
}
- rows = amount;
current = d;
changed = false;
- if (amount > 0) {
- beginInsertRows(QModelIndex(), 0, amount - 1);
+ if (rows > 0) {
+ beginInsertRows(QModelIndex(), 0, rows-1);
endInsertRows();
}
}
diff --git a/save-xml.c b/save-xml.c
index d16b16daf..0b83a0235 100644
--- a/save-xml.c
+++ b/save-xml.c
@@ -301,18 +301,29 @@ static void save_cylinder_info(FILE *f, struct dive *dive)
}
}
+static int nr_weightsystems(struct dive *dive)
+{
+ int nr;
+
+ for (nr = MAX_WEIGHTSYSTEMS; nr; --nr) {
+ weightsystem_t *ws = dive->weightsystem+nr-1;
+ if (!weightsystem_none(ws))
+ break;
+ }
+ return nr;
+}
+
static void save_weightsystem_info(FILE *f, struct dive *dive)
{
- int i;
+ int i, nr;
- for (i = 0; i < MAX_WEIGHTSYSTEMS; i++) {
+ nr = nr_weightsystems(dive);
+
+ for (i = 0; i < nr; i++) {
weightsystem_t *ws = dive->weightsystem+i;
int grams = ws->weight.grams;
const char *description = ws->description;
- /* No weight information at all? */
- if (grams == 0)
- return;
fprintf(f, " <weightsystem");
show_milli(f, " weight='", grams, " kg", "'");
show_utf8(f, description, " description='", "'", 1);