core: turn trip-table into our own sorted_owning_table

Since the sorted_owning_table depends on the fact that
different elements never compare as equal, make the
comparison function safer in that respect. If all failes,
compare the pointers.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2024-06-01 22:05:57 +02:00 committed by bstoeger
parent 1cebafb08f
commit eacad89531
21 changed files with 217 additions and 305 deletions

View file

@ -169,7 +169,7 @@ void TabDiveNotes::updateDateTime(const struct dive *d)
void TabDiveNotes::updateTripDate(const struct dive_trip *t)
{
QDateTime localTime = timestampToDateTime(trip_date(t));
QDateTime localTime = timestampToDateTime(trip_date(*t));
ui.dateEdit->setDate(localTime.date());
}

View file

@ -18,9 +18,9 @@ TripSelectionDialog::TripSelectionDialog(QWidget *parent) : QDialog(parent)
// We could use a model, but it seems barely worth the hassle.
QStringList list;
list.reserve(divelog.trips->nr);
for (int i = 0; i < divelog.trips->nr; ++i)
list.push_back(formatTripTitleWithDives(divelog.trips->trips[i]));
list.reserve(divelog.trips->size());
for (auto &trip: *divelog.trips)
list.push_back(formatTripTitleWithDives(*trip));
ui.trips->addItems(list);
}
@ -37,9 +37,9 @@ dive_trip *TripSelectionDialog::selectedTrip() const
if (rows.size() != 1)
return nullptr;
int idx = rows[0].row();
if (idx < 0 || idx >= divelog.trips->nr)
if (idx < 0 || static_cast<size_t>(idx) >= divelog.trips->size())
return nullptr;
return divelog.trips->trips[idx];
return (*divelog.trips)[idx].get();
}
dive_trip *TripSelectionDialog::getTrip()