Dive list: replace dive-list of trips by a table

The dives of each trip were kept in a list. Replace this by a
struct dive_table. This will make it significantly easier to
keep the dives of a trip in sorted state.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2018-11-08 16:58:33 +01:00 committed by Dirk Hohndel
parent bc7afebc23
commit 6b283e598a
9 changed files with 63 additions and 80 deletions

View file

@ -100,7 +100,7 @@ void DiveListSortModel::updateDivesShownInTrips()
struct dive_trip *dt = dive_trip_list;
int rc = rowCount();
while (dt) {
dt->showndives = rc ? 0 : dt->nrdives;
dt->showndives = rc ? 0 : dt->dives.nr;
dt = dt->next;
}
for (int i = 0; i < rowCount(); i++) {

View file

@ -57,20 +57,19 @@ QVariant DiveTripModel::tripData(const dive_trip *trip, int column, int role)
switch (column) {
case DiveTripModel::NR:
QString shownText;
struct dive *d = trip->dives;
int countShown = 0;
while (d) {
for (int i = 0; i < trip->dives.nr; ++i) {
struct dive *d = trip->dives.dives[i];
if (!d->hidden_by_filter)
countShown++;
oneDayTrip &= is_same_day (trip->when, d->when);
d = d->next;
}
if (countShown < trip->nrdives)
if (countShown < trip->dives.nr)
shownText = tr("(%1 shown)").arg(countShown);
if (!empty_string(trip->location))
return QString(trip->location) + ", " + get_trip_date_string(trip->when, trip->nrdives, oneDayTrip) + " "+ shownText;
return QString(trip->location) + ", " + get_trip_date_string(trip->when, trip->dives.nr, oneDayTrip) + " "+ shownText;
else
return get_trip_date_string(trip->when, trip->nrdives, oneDayTrip) + shownText;
return get_trip_date_string(trip->when, trip->dives.nr, oneDayTrip) + shownText;
}
}

View file

@ -634,8 +634,8 @@ bool MultiFilterSortModel::filterAcceptsRow(int source_row, const QModelIndex &s
return false; // Oops. Neither dive nor trip, something is seriously wrong.
// Show the trip if any dive is visible
for (d = trip->dives; d; d = d->next) {
if (!d->hidden_by_filter)
for (int i = 0; i < trip->dives.nr; ++i) {
if (!trip->dives.dives[i]->hidden_by_filter)
return true;
}
return false;