Dive list: move dive-selection code from filter to list

After invalidating the filter, the dive-selection was modified to
ensure that at least one dive is selected. This was done in the
filter code, but it seems preferrable to do this in the dive-list
code, which has direct access to the selection-model.

Therefore, move the code from MultiFilterSortModel to DiveListView.
While doing so, split the code in DiveListView into more functions to:
1) Get the index of the first dive (if any).
2) Select the first dive (if any).

This allows a distinct size reduction of conditional compilation
in MultiFilterSortModel (accesses to MainWindow are not possible
in mobile code).

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2018-10-20 11:56:06 +02:00 committed by Lubomir I. Ivanov
parent 2f81890f49
commit 9829e49815
3 changed files with 62 additions and 47 deletions

View file

@ -29,8 +29,11 @@ public:
bool eventFilter(QObject *, QEvent *);
void unselectDives();
void clearTripSelection();
void selectDive(QModelIndex index, bool scrollto = false, bool toggle = false);
void selectDive(int dive_table_idx, bool scrollto = false, bool toggle = false);
void selectDives(const QList<int> &newDiveSelection);
void selectFirstDive();
QModelIndex indexOfFirstDive();
void rememberSelection();
void restoreSelection();
void contextMenuEvent(QContextMenuEvent *event);
@ -60,6 +63,7 @@ slots:
void loadWebImages();
void diveSelectionChanged(const QVector<QModelIndex> &indexes, bool select);
void currentDiveChanged(QModelIndex index);
void filterFinished();
private:
bool mouseClickSelection;
QList<int> expandedRows;