Fix wrong handling of Dive Table, and revert some wrong changes.

This patch just reverts some wrong changes that I'v done on a
past commit ( sorry ) and correctly handles the selectDive,
by using a IDX instead of the dive pointer, as dirk told me
it's extremely error-prone since the pointer can change.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2013-11-16 18:41:47 -02:00 committed by Dirk Hohndel
parent c1a05fd034
commit 4f9526ef81
6 changed files with 32 additions and 74 deletions

View file

@ -989,6 +989,9 @@ QVariant DiveItem::data(int column, int role) const
if (role == DiveTripModel::DIVE_ROLE)
retVal = QVariant::fromValue<void*>(dive);
if(role == DiveTripModel::DIVE_IDX){
retVal = get_divenr(dive);
}
return retVal;
}
@ -1198,23 +1201,6 @@ QVariant DiveComputerModel::data(const QModelIndex& index, int role) const
return ret;
}
void DiveTripModel::deleteSelectedDives()
{
// after a dive is deleted the ones following it move forward in the dive_table
// so instead of using the for_each_dive macro I'm using an explicit for loop
// to make this easier to understand
beginRemoveRows(index(0,0), 0, rowCount()-1);
for (int i = 0; i < dive_table.nr; i++) {
struct dive *d = get_dive(i);
if (!d->selected)
continue;
delete_single_dive(i);
i--; // so the next dive isn't skipped... it's now #i
}
endRemoveRows();
setupModelData();
}
int DiveComputerModel::rowCount(const QModelIndex& parent) const
{
return numRows;