summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qt-ui/divelistview.cpp1
-rw-r--r--qt-ui/models.cpp27
-rw-r--r--qt-ui/models.h2
3 files changed, 29 insertions, 1 deletions
diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp
index 948bfa57a..0e3f62793 100644
--- a/qt-ui/divelistview.cpp
+++ b/qt-ui/divelistview.cpp
@@ -21,6 +21,7 @@ DiveListView::DiveListView(QWidget *parent) : QTreeView(parent), mouseClickSelec
setUniformRowHeights(true);
setItemDelegateForColumn(TreeItemDT::RATING, new StarWidgetsDelegate());
QSortFilterProxyModel *model = new QSortFilterProxyModel(this);
+ model->setSortRole(TreeItemDT::SORT_ROLE);
setModel(model);
setSortingEnabled(false);
header()->setContextMenuPolicy(Qt::ActionsContextMenu);
diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp
index 98a84d7f9..ff8cb5eaf 100644
--- a/qt-ui/models.cpp
+++ b/qt-ui/models.cpp
@@ -822,6 +822,9 @@ QVariant TripItem::data(int column, int role) const
{
QVariant ret;
+ if (role == SORT_ROLE)
+ return (qulonglong)trip->when;
+
if (role == Qt::DisplayRole) {
switch (column) {
case LOCATION:
@@ -848,6 +851,13 @@ struct DiveItem : public TreeItemDT {
int weight() const;
};
+static int nitrox_sort_value(struct dive *dive)
+{
+ int o2, he, o2low;
+ get_dive_gas(dive, &o2, &he, &o2low);
+ return he*1000 + o2;
+}
+
QVariant DiveItem::data(int column, int role) const
{
QVariant retVal;
@@ -865,6 +875,23 @@ QVariant DiveItem::data(int column, int role) const
break;
}
break;
+ case SORT_ROLE:
+ switch (column) {
+ case NR: return dive->number;
+ case DATE: return (qulonglong) dive->when;
+ case DEPTH: return dive->maxdepth.mm;
+ case DURATION: return dive->duration.seconds;
+ case TEMPERATURE: return dive->watertemp.mkelvin;
+ case TOTALWEIGHT: return total_weight(dive);
+ case SUIT: return QString(dive->suit);
+ case CYLINDER: return QString(dive->cylinder[0].type.description);
+ case NITROX: return nitrox_sort_value(dive);
+ case SAC: return dive->sac;
+ case OTU: return dive->otu;
+ case MAXCNS: return dive->maxcns;
+ case LOCATION: return QString(dive->location);
+ }
+ break;
case Qt::DisplayRole:
switch (column) {
case NR:
diff --git a/qt-ui/models.h b/qt-ui/models.h
index b4eb8d953..99d028aca 100644
--- a/qt-ui/models.h
+++ b/qt-ui/models.h
@@ -124,7 +124,7 @@ public:
enum Column {NR, DATE, RATING, DEPTH, DURATION, TEMPERATURE, TOTALWEIGHT,
SUIT, CYLINDER, NITROX, SAC, OTU, MAXCNS, LOCATION, COLUMNS };
- enum ExtraRoles{STAR_ROLE = Qt::UserRole + 1, DIVE_ROLE};
+ enum ExtraRoles{STAR_ROLE = Qt::UserRole + 1, DIVE_ROLE, SORT_ROLE};
virtual ~TreeItemDT();
int columnCount() const {