core: make get_trip_by_uniq_id a member of trip_table

Don't access the global trip_table in an attempt to cut down
on implicit accesses of global variables.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2024-06-02 00:36:20 +02:00 committed by bstoeger
parent eacad89531
commit 71518fa77e
3 changed files with 6 additions and 7 deletions

View file

@ -138,11 +138,10 @@ std::pair<dive_trip *, std::unique_ptr<dive_trip>> get_trip_for_new_dive(const s
}
/* lookup of trip in main trip_table based on its id */
dive_trip *get_trip_by_uniq_id(int tripId)
dive_trip *trip_table::get_by_uniq_id(int tripId) const
{
auto it = std::find_if(divelog.trips->begin(), divelog.trips->end(),
[tripId](auto &t) { return t->id == tripId; });
return it != divelog.trips->end() ? it->get() : nullptr;
auto it = std::find_if(begin(), end(), [tripId](auto &t) { return t->id == tripId; });
return it != end() ? it->get() : nullptr;
}
/* Check if two trips overlap time-wise up to trip threshold. */

View file

@ -25,6 +25,7 @@ struct dive_trip
int comp_trips(const dive_trip &t1, const dive_trip &t2);
struct trip_table : public sorted_owning_table<dive_trip, &comp_trips> {
dive_trip *get_by_uniq_id(int tripId) const;
};
extern void add_dive_to_trip(struct dive *, dive_trip *);
@ -45,7 +46,6 @@ struct dives_to_autogroup_result {
extern std::vector<dives_to_autogroup_result> get_dives_to_autogroup(struct dive_table *table);
extern std::pair<dive_trip *, std::unique_ptr<dive_trip>> get_trip_for_new_dive(const struct dive *new_dive);
extern dive_trip *get_trip_by_uniq_id(int tripId);
extern bool trips_overlap(const struct dive_trip &t1, const struct dive_trip &t2);
extern std::unique_ptr<dive_trip> combine_trips(struct dive_trip *trip_a, struct dive_trip *trip_b);

View file

@ -1369,7 +1369,7 @@ void QMLManager::commitChanges(QString diveId, QString number, QString date, QSt
void QMLManager::updateTripDetails(QString tripIdString, QString tripLocation, QString tripNotes)
{
int tripId = tripIdString.toInt();
dive_trip *trip = get_trip_by_uniq_id(tripId);
dive_trip *trip = divelog.trips->get_by_uniq_id(tripId);
if (!trip) {
report_info("updateTripData: cannot find trip for tripId %s", qPrintable(tripIdString));
return;
@ -1428,7 +1428,7 @@ void QMLManager::addDiveToTrip(int id, int tripId)
appendTextToLog(QString("Asked to add non-existing dive with id %1 to trip %2.").arg(id).arg(tripId));
return;
}
struct dive_trip *dt = get_trip_by_uniq_id(tripId);
struct dive_trip *dt = divelog.trips->get_by_uniq_id(tripId);
if (!dt) {
appendTextToLog(QString("Asked to add dive with id %1 to trip with id %2 which cannot be found.").arg(id).arg(tripId));
return;