mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Dive list: remember selected dives
Don't delesect dives, when unregistering them from the backend. If a previously selected dive is added, select it in the dive-list. For this purpose introduce a SELECTED_ROLE to query the DiveTripModel for selected dives. Unfortunately, when adding multiple selected dives, current_dive_changed is called for each of them, making this very slow. This will have to be fixed in subsequent commits. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
96d8727399
commit
0d98da5261
4 changed files with 29 additions and 12 deletions
|
@ -181,10 +181,19 @@ void DiveListView::rowsInserted(const QModelIndex &parent, int start, int end)
|
|||
// First, let the QTreeView do its thing.
|
||||
QTreeView::rowsInserted(parent, start, end);
|
||||
|
||||
QAbstractItemModel *m = model();
|
||||
QItemSelectionModel *s = selectionModel();
|
||||
|
||||
// Check whether any of the items is selected
|
||||
for (int i = start; i <= end; ++i) {
|
||||
QModelIndex index = m->index(i, 0, parent);
|
||||
if (m->data(index, DiveTripModel::SELECTED_ROLE).toBool())
|
||||
s->select(index, QItemSelectionModel::Select | QItemSelectionModel::Rows);
|
||||
}
|
||||
|
||||
// Now check for each inserted row whether this is a trip and expand the first column
|
||||
if (parent.isValid()) // Trips don't have a parent
|
||||
return;
|
||||
QAbstractItemModel *m = model();
|
||||
for (int i = start; i <= end; ++i) {
|
||||
if (m->rowCount(m->index(i, 0)) != 0)
|
||||
setFirstColumnSpanned(i, QModelIndex(), true);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue