diff options
-rw-r--r-- | qt-ui/divelistview.cpp | 1 | ||||
-rw-r--r-- | qt-ui/models.cpp | 27 | ||||
-rw-r--r-- | qt-ui/models.h | 2 |
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 { |