From da3ea59a25890b5992413e80c4260e4350129061 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sun, 4 Nov 2018 20:24:16 +0100 Subject: Dive list: let sort arrows reflect sort order for NR and DATE The old code always sorted by "ascending" by default. But because users typically want their new dives top, "ascending" was defined for NR and DATE, such that it is actually descending. Turn these around and intitialize these two fields as default-descending. This is possible using the Qt::InitialSortOrderRole role in DiveTripModel::headerData(). Signed-off-by: Berthold Stoeger --- qt-models/divetripmodel.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'qt-models') diff --git a/qt-models/divetripmodel.cpp b/qt-models/divetripmodel.cpp index 7c86d6b73..3655ecab2 100644 --- a/qt-models/divetripmodel.cpp +++ b/qt-models/divetripmodel.cpp @@ -350,6 +350,9 @@ QVariant DiveTripModel::headerData(int section, Qt::Orientation orientation, int return dive_table_alignment(section); case Qt::FontRole: return defaultModelFont(); + case Qt::InitialSortOrderRole: + // By default, sort NR and DATE descending, everything else ascending. + return section == NR || section == DATE ? Qt::DescendingOrder : Qt::AscendingOrder; case Qt::DisplayRole: switch (section) { case NR: @@ -1084,7 +1087,9 @@ bool DiveTripModel::lessThan(const QModelIndex &i1, const QModelIndex &i2) const if (currentLayout != LIST) { // In tree mode we don't support any sorting! // Simply keep the original position. - return i1.row() < i2.row(); + // Note that the model is filled in reverse order, therefore + // ascending means sorting in descending order. TODO: fix. + return i1.row() > i2.row(); } // We assume that i1.column() == i2.column(). @@ -1100,7 +1105,9 @@ bool DiveTripModel::lessThan(const QModelIndex &i1, const QModelIndex &i2) const case NR: case DATE: default: - return row1 < row2; + // Note that the model is filled in reverse order, therefore + // ascending means sorting in descending order. TODO: fix. + return row1 > row2; case RATING: return lessThanHelper(d1->rating - d2->rating, row_diff); case DEPTH: -- cgit v1.2.3-70-g09d2