mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Core: dynamically resize weight table
Replace the fixed-size weightsystem table by a dynamically relocated table. Reuse the table-macros used in other parts of the code. The table stores weightsystem entries, not pointers to weightsystems. Thus, ownership of the description string is taken when adding a weightsystem. An extra function adds a cloned weightsystem at the end of the table. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
efdb3503ea
commit
a5e7f4253a
25 changed files with 182 additions and 154 deletions
|
@ -172,6 +172,10 @@ static QVector<dive *> getSelectedDivesCurrentLast()
|
|||
return res;
|
||||
}
|
||||
|
||||
// TODO: This is only a temporary function until undo of weightsystems is implemented.
|
||||
// Therefore it is not worth putting it in a header.
|
||||
extern bool weightsystems_equal(const dive *d1, const dive *d2);
|
||||
|
||||
void TabDiveEquipment::acceptChanges()
|
||||
{
|
||||
bool do_replot = false;
|
||||
|
@ -232,17 +236,10 @@ void TabDiveEquipment::acceptChanges()
|
|||
if (weightModel->changed) {
|
||||
mark_divelist_changed(true);
|
||||
MODIFY_DIVES(selectedDives,
|
||||
for (int i = 0; i < MAX_WEIGHTSYSTEMS; i++) {
|
||||
if (mydive != cd && (same_string(mydive->weightsystem[i].description, cd->weightsystem[i].description))) {
|
||||
mydive->weightsystem[i] = displayed_dive.weightsystem[i];
|
||||
mydive->weightsystem[i].description = copy_string(displayed_dive.weightsystem[i].description);
|
||||
}
|
||||
}
|
||||
if (weightsystems_equal(mydive, cd))
|
||||
copy_weights(&displayed_dive.weightsystems, &mydive->weightsystems);
|
||||
);
|
||||
for (int i = 0; i < MAX_WEIGHTSYSTEMS; i++) {
|
||||
cd->weightsystem[i] = displayed_dive.weightsystem[i];
|
||||
cd->weightsystem[i].description = copy_string(displayed_dive.weightsystem[i].description);
|
||||
}
|
||||
copy_weights(&displayed_dive.weightsystems, &cd->weightsystems);
|
||||
}
|
||||
|
||||
if (do_replot)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue