mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Show/save weights up to and including last valid
Previous show and save code would have aborted at the first invalid weight system. This makes sure we save and show all weight systems up until and including the last valid. If we had: integrated: 1kg belt: 2kg ankle: 3kg And changed belt to 0 kg, we would have only saved integrated 1kg, and nothing about the belt or the ankle weights. This will save all of them, and show all of them. Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
ab4115791b
commit
57fb878b41
2 changed files with 21 additions and 14 deletions
|
@ -543,20 +543,16 @@ void WeightModel::setDive(dive* d)
|
||||||
{
|
{
|
||||||
if (current)
|
if (current)
|
||||||
clear();
|
clear();
|
||||||
|
rows = 0;
|
||||||
int amount = MAX_WEIGHTSYSTEMS;
|
|
||||||
for(int i = 0; i < MAX_WEIGHTSYSTEMS; i++) {
|
for(int i = 0; i < MAX_WEIGHTSYSTEMS; i++) {
|
||||||
weightsystem_t *weightsystem = &d->weightsystem[i];
|
if (!weightsystem_none(&d->weightsystem[i])) {
|
||||||
if (weightsystem_none(weightsystem)) {
|
rows = i+1;
|
||||||
amount = i;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rows = amount;
|
|
||||||
current = d;
|
current = d;
|
||||||
changed = false;
|
changed = false;
|
||||||
if (amount > 0) {
|
if (rows > 0) {
|
||||||
beginInsertRows(QModelIndex(), 0, amount - 1);
|
beginInsertRows(QModelIndex(), 0, rows-1);
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
21
save-xml.c
21
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)
|
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;
|
weightsystem_t *ws = dive->weightsystem+i;
|
||||||
int grams = ws->weight.grams;
|
int grams = ws->weight.grams;
|
||||||
const char *description = ws->description;
|
const char *description = ws->description;
|
||||||
|
|
||||||
/* No weight information at all? */
|
|
||||||
if (grams == 0)
|
|
||||||
return;
|
|
||||||
fprintf(f, " <weightsystem");
|
fprintf(f, " <weightsystem");
|
||||||
show_milli(f, " weight='", grams, " kg", "'");
|
show_milli(f, " weight='", grams, " kg", "'");
|
||||||
show_utf8(f, description, " description='", "'", 1);
|
show_utf8(f, description, " description='", "'", 1);
|
||||||
|
|
Loading…
Reference in a new issue