mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
core: move add_to_weightsystem_table() to weightsystem_table
Feels natural in a C++ code base. In analogy to other tables, this creates a struct that derives from std::vector<>. This is generally frowned upon, but it works and is the pragmatic thing for now. If someone wants to "fix" that, they may just do it. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
498302dcc6
commit
650fda3221
4 changed files with 8 additions and 7 deletions
|
@ -1009,7 +1009,7 @@ RemoveWeight::RemoveWeight(int index, bool currentDiveOnly) :
|
||||||
void RemoveWeight::undo()
|
void RemoveWeight::undo()
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < dives.size(); ++i) {
|
for (size_t i = 0; i < dives.size(); ++i) {
|
||||||
add_to_weightsystem_table(&dives[i]->weightsystems, indices[i], ws);
|
dives[i]->weightsystems.add(indices[i], ws);
|
||||||
emit diveListNotifier.weightAdded(dives[i], indices[i]);
|
emit diveListNotifier.weightAdded(dives[i], indices[i]);
|
||||||
dives[i]->invalidate_cache(); // Ensure that dive is written in git_save()
|
dives[i]->invalidate_cache(); // Ensure that dive is written in git_save()
|
||||||
}
|
}
|
||||||
|
|
|
@ -312,10 +312,10 @@ void remove_weightsystem(struct dive *dive, int idx)
|
||||||
dive->weightsystems.erase(dive->weightsystems.begin() + idx);
|
dive->weightsystems.erase(dive->weightsystems.begin() + idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_to_weightsystem_table(weightsystem_table *table, int idx, weightsystem_t ws)
|
void weightsystem_table::add(int idx, weightsystem_t ws)
|
||||||
{
|
{
|
||||||
idx = std::clamp(idx, 0, static_cast<int>(table->size()));
|
idx = std::clamp(idx, 0, static_cast<int>(size()));
|
||||||
table->insert(table->begin() + idx, std::move(ws));
|
insert(begin() + idx, std::move(ws));
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_weightsystem(struct dive *dive, int idx, weightsystem_t ws)
|
void set_weightsystem(struct dive *dive, int idx, weightsystem_t ws)
|
||||||
|
|
|
@ -68,7 +68,9 @@ struct weightsystem_t
|
||||||
* *not* pointers * to weightsystems. Therefore pointers to
|
* *not* pointers * to weightsystems. Therefore pointers to
|
||||||
* weightsystems are *not* stable.
|
* weightsystems are *not* stable.
|
||||||
*/
|
*/
|
||||||
using weightsystem_table = std::vector<weightsystem_t>;
|
struct weightsystem_table : public std::vector<weightsystem_t> {
|
||||||
|
void add(int idx, weightsystem_t ws);
|
||||||
|
};
|
||||||
|
|
||||||
extern enum cylinderuse cylinderuse_from_text(const char *text);
|
extern enum cylinderuse cylinderuse_from_text(const char *text);
|
||||||
extern void copy_cylinder_types(const struct dive *s, struct dive *d);
|
extern void copy_cylinder_types(const struct dive *s, struct dive *d);
|
||||||
|
@ -88,7 +90,6 @@ extern void dump_cylinders(struct dive *dive, bool verbose);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Weightsystem table functions */
|
/* Weightsystem table functions */
|
||||||
extern void add_to_weightsystem_table(weightsystem_table *, int idx, weightsystem_t ws);
|
|
||||||
|
|
||||||
/* Cylinder table functions */
|
/* Cylinder table functions */
|
||||||
extern void add_cylinder(struct cylinder_table *, int idx, cylinder_t cyl);
|
extern void add_cylinder(struct cylinder_table *, int idx, cylinder_t cyl);
|
||||||
|
|
|
@ -1228,7 +1228,7 @@ void QMLManager::commitChanges(QString diveId, QString number, QString date, QSt
|
||||||
// defined - for now just ignore that case
|
// defined - for now just ignore that case
|
||||||
if (d->weightsystems.size() == 0) {
|
if (d->weightsystems.size() == 0) {
|
||||||
weightsystem_t ws = { { parseWeightToGrams(weight) } , tr("weight").toStdString(), false };
|
weightsystem_t ws = { { parseWeightToGrams(weight) } , tr("weight").toStdString(), false };
|
||||||
add_to_weightsystem_table(&d->weightsystems, 0, std::move(ws));
|
d->weightsystems.add(0, std::move(ws));
|
||||||
} else if (d->weightsystems.size() == 1) {
|
} else if (d->weightsystems.size() == 1) {
|
||||||
d->weightsystems[0].weight.grams = parseWeightToGrams(weight);
|
d->weightsystems[0].weight.grams = parseWeightToGrams(weight);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue