diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2018-11-04 17:54:38 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2018-11-05 07:55:53 -0800 |
commit | f2f18b4e16656f0eb0d6b41981baa991ade3d33c (patch) | |
tree | c833d718a3f0c34e4dfb3fa38a9d6e0e7a94e74b /desktop-widgets/divelistview.h | |
parent | 236373b6ba92b9a3935958a367e88b05d4f54854 (diff) | |
download | subsurface-f2f18b4e16656f0eb0d6b41981baa991ade3d33c.tar.gz |
Dive list: split reload() in reload() and setSortOrder()
The DiveListView code had a very fundamental problem with its
header: Each had its own idea of who is responsible for sorting.
Since we can't easily change QHeaderView, accept QHeaderView
as the authority on sort-column and order.
To make this possible, split the reload() function in two
distinct functions:
- reload() reloads the model and sorts according to the
current sort criterion.
- setSortOrder() tells the header to display a certain
sort criterion. If this is a new criterion, it will then
emit a signal. In this signal, resort according to that
criterion.
Thus, the actual sorting code has to be moved from the
headerClicked() to a new sortIndicatorChanged() slot.
Morover, the sorting of the QHeaderView has to be used.
Reported-by: Stefan Fuchs <sfuchs@gmx.de>
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/divelistview.h')
-rw-r--r-- | desktop-widgets/divelistview.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/desktop-widgets/divelistview.h b/desktop-widgets/divelistview.h index 44d6fdc24..79049d754 100644 --- a/desktop-widgets/divelistview.h +++ b/desktop-widgets/divelistview.h @@ -25,7 +25,8 @@ public: void mouseDoubleClickEvent(QMouseEvent * event); void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); - void reload(DiveTripModel::Layout layout); + void setSortOrder(int i, Qt::SortOrder order); // Call to set sort order + void reload(); // Call to reload model data bool eventFilter(QObject *, QEvent *); void unselectDives(); void clearTripSelection(); @@ -44,7 +45,7 @@ public slots: void toggleColumnVisibilityByIndex(); void reloadHeaderActions(); - void headerClicked(int); + void sortIndicatorChanged(int index, Qt::SortOrder order); void removeFromTrip(); void deleteDive(); void markDiveInvalid(); |