diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-03-06 16:33:34 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-03-06 13:46:41 -0800 |
commit | dbddec59d3736a2e3ac9498528209a8397b897b7 (patch) | |
tree | b600e32f2aff8d55adc8536e371e073b1ff56a99 | |
parent | a88ab64cf80db7bde3e14ac41acf1ed2d73dbdf1 (diff) | |
download | subsurface-dbddec59d3736a2e3ac9498528209a8397b897b7.tar.gz |
divetripmodel: add TRIP_HAS_CURRENT_ROLE
This role returns true if the given trip contains the current
dive. This will be needed by the mobile list model to decide
if a newly added trip should be expanded right away.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | qt-models/divetripmodel.cpp | 15 | ||||
-rw-r--r-- | qt-models/divetripmodel.h | 3 |
2 files changed, 13 insertions, 5 deletions
diff --git a/qt-models/divetripmodel.cpp b/qt-models/divetripmodel.cpp index 5b7f96ba1..63c111981 100644 --- a/qt-models/divetripmodel.cpp +++ b/qt-models/divetripmodel.cpp @@ -820,14 +820,21 @@ QVariant DiveTripModelTree::data(const QModelIndex &index, int role) const return defaultModelFont(); dive_or_trip entry = tripOrDive(index); - if (role == IS_TRIP_ROLE) + if (!entry.trip && !entry.dive) + return QVariant(); // That's an invalid index! + if (role == IS_TRIP_ROLE) { return !!entry.trip; + } else if (role == TRIP_HAS_CURRENT_ROLE) { + if (!entry.trip) + return false; + + const Item &item = items[index.row()]; + return std::find(item.dives.begin(), item.dives.end(), current_dive) != item.dives.end(); + } if (entry.trip) return tripData(entry.trip, index.column(), role); - else if (entry.dive) - return diveData(entry.dive, index.column(), role); else - return QVariant(); + return diveData(entry.dive, index.column(), role); } // After a trip changed, the top level might need to be reordered. diff --git a/qt-models/divetripmodel.h b/qt-models/divetripmodel.h index d0e473f7a..64f89bd8d 100644 --- a/qt-models/divetripmodel.h +++ b/qt-models/divetripmodel.h @@ -50,7 +50,8 @@ public: TRIP_ROLE, DIVE_IDX, SELECTED_ROLE, - CURRENT_ROLE + CURRENT_ROLE, + TRIP_HAS_CURRENT_ROLE // Returns true if this is a trip and it contains the current dive }; enum Layout { TREE, |