summaryrefslogtreecommitdiffstats
path: root/qt-models/filtermodels.h
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2018-10-29 20:17:53 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-11-01 07:28:15 -0700
commitab894c9b64ca5cceef87d1835f3a84103668ffc9 (patch)
tree0e61eb8ea4af3895713351d76419566a9c183e7d /qt-models/filtermodels.h
parent6fb3a499e67bc5375e66faef5969afee99a74d25 (diff)
downloadsubsurface-ab894c9b64ca5cceef87d1835f3a84103668ffc9.tar.gz
Dive list: implement custom lessThan function
The dive list was sorted using the default-sorter of QSortFilterProxy model. This is mighty inflexible as it considers only one column. This has the funky effect that for rows with identical elements, the sort order depends on the previous sorting. Implement a lessThan() function in the MultiFilterSortModel, which simply hands the sorting down to the actual model. This might be considered a layering violation, but it makes things so much easier. Sadly, it seems like the column-to-be-sorted is transported in the provided indices. Therefore, the comparison is chosen using a switch for *every* comparison. It would seem much more logical to set a function pointer once and use that. Further investigations are necessary. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'qt-models/filtermodels.h')
-rw-r--r--qt-models/filtermodels.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/qt-models/filtermodels.h b/qt-models/filtermodels.h
index f579df1a9..8830e99c3 100644
--- a/qt-models/filtermodels.h
+++ b/qt-models/filtermodels.h
@@ -11,6 +11,7 @@
struct dive;
struct dive_trip;
+class DiveTripModel;
class FilterModelBase : public QAbstractListModel {
Q_OBJECT
@@ -127,6 +128,7 @@ public:
void divesDeleted(const QVector<dive *> &dives);
bool showDive(const struct dive *d) const;
int divesDisplayed;
+ bool lessThan(const QModelIndex &, const QModelIndex &) const override;
public
slots:
void myInvalidate();
@@ -142,6 +144,7 @@ private:
MultiFilterSortModel(QObject *parent = 0);
QList<FilterModelBase *> models;
struct dive_site *curr_dive_site;
+ DiveTripModel *model;
};
#endif