From 9a4cafd0f10b36fd25bda6ce67106557f389dcff Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Fri, 2 Jan 2015 22:09:01 -0800 Subject: Fix gaschange tooltip information The code tried to look up the cylinder index from the Qt data models, which was not only horribly confusing, but was also buggy. I think the index ends up being off by one when the first cylinder change is hidden (because it's at the beginning of the dive), but I can't make heads or tails of that crazy code, so there might be something else going on. Just remove all the crazy code, and use the event data directly. Which gas the gasmix and the (potential) explicit cylinder index already. It's much more straightforward, and it just automatically gets the right end result whether some other event is hidden or not. Signed-off-by: Linus Torvalds Signed-off-by: Dirk Hohndel --- qt-ui/profile/diveeventitem.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'qt-ui/profile') diff --git a/qt-ui/profile/diveeventitem.cpp b/qt-ui/profile/diveeventitem.cpp index a9c3c3fd7..4294dfb29 100644 --- a/qt-ui/profile/diveeventitem.cpp +++ b/qt-ui/profile/diveeventitem.cpp @@ -101,15 +101,12 @@ void DiveEventItem::setupToolTipString() int type = internalEvent->type; if (value) { if (event_is_gaschange(internalEvent)) { - QModelIndexList result = dataModel->match(dataModel->index(0, DivePlotDataModel::TIME), Qt::DisplayRole, internalEvent->time.seconds); - if (result.isEmpty()) { - Q_ASSERT("can't find a spot in the dataModel"); - return; - } - // We need to look at row + 1, where the new gas is active to find what we are switching to. - int cylinder_idx = dataModel->data(dataModel->index(result.first().row() + 1, DivePlotDataModel::CYLINDERINDEX)).toInt(); name += ": "; - name += gasname(&displayed_dive.cylinder[cylinder_idx].gasmix); + name += gasname(&internalEvent->gas.mix); + + /* Do we have an explicit cylinder index? Show it. */ + if (internalEvent->gas.index >= 0) + name += QString(" (cyl %1)").arg(internalEvent->gas.index); } else if (type == SAMPLE_EVENT_PO2 && name == "SP change") { name += QString(":%1").arg((double)value / 1000); } else { -- cgit v1.2.3-70-g09d2