mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
Dive list: switch to a default sort order on column-header click
On desktop, clicking on a column header sorts the dive-list. This has the interesting property that every click reverses the sort order (unless changing from list to tree-mode). The much more common idiom seems to be to define a default sort order for each column and switch to that when changing sort-column. Switch order after clicking the same column again. Implement this more common behavior. For now, sort # and date in descending, all other columns in ascending order. While doing this, use the proper enum (NR) for setting the default sort-column instead of its integer representation (0). Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
7f2026ded8
commit
f634554d30
1 changed files with 9 additions and 2 deletions
|
@ -26,7 +26,7 @@
|
||||||
#include "core/metrics.h"
|
#include "core/metrics.h"
|
||||||
#include "core/subsurface-qt/DiveListNotifier.h"
|
#include "core/subsurface-qt/DiveListNotifier.h"
|
||||||
|
|
||||||
DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false), sortColumn(0),
|
DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelection(false), sortColumn(DiveTripModel::NR),
|
||||||
currentOrder(Qt::DescendingOrder), dontEmitDiveChangedSignal(false), selectionSaved(false),
|
currentOrder(Qt::DescendingOrder), dontEmitDiveChangedSignal(false), selectionSaved(false),
|
||||||
initialColumnWidths(DiveTripModel::COLUMNS, 50) // Set up with default length 50
|
initialColumnWidths(DiveTripModel::COLUMNS, 50) // Set up with default length 50
|
||||||
{
|
{
|
||||||
|
@ -472,7 +472,14 @@ void DiveListView::headerClicked(int i)
|
||||||
unselectDives();
|
unselectDives();
|
||||||
/* No layout change? Just re-sort, and scroll to first selection, making sure all selections are expanded */
|
/* No layout change? Just re-sort, and scroll to first selection, making sure all selections are expanded */
|
||||||
if (currentLayout == newLayout) {
|
if (currentLayout == newLayout) {
|
||||||
|
// If this is the same column as before, change sort order. Otherwise, choose a default
|
||||||
|
// sort order (descending for NR and DATE, ascending elsewise).
|
||||||
|
if (sortColumn == i)
|
||||||
currentOrder = (currentOrder == Qt::DescendingOrder) ? Qt::AscendingOrder : Qt::DescendingOrder;
|
currentOrder = (currentOrder == Qt::DescendingOrder) ? Qt::AscendingOrder : Qt::DescendingOrder;
|
||||||
|
else if (i == DiveTripModel::NR || i == DiveTripModel::DATE)
|
||||||
|
currentOrder = Qt::DescendingOrder;
|
||||||
|
else
|
||||||
|
currentOrder = Qt::AscendingOrder;
|
||||||
sortByColumn(i, currentOrder);
|
sortByColumn(i, currentOrder);
|
||||||
} else {
|
} else {
|
||||||
// clear the model, repopulate with new indexes.
|
// clear the model, repopulate with new indexes.
|
||||||
|
|
Loading…
Reference in a new issue