diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-08-14 23:53:28 +0200 |
---|---|---|
committer | bstoeger <32835590+bstoeger@users.noreply.github.com> | 2019-09-14 13:20:59 +0200 |
commit | 1b9581369af95bdf366f08c0d00d24c315d339bb (patch) | |
tree | a7c38c8993f14acc8eac4d8ba8a6f8d49e0975d8 | |
parent | b7cddcc737886ee3e99cee30a78423570de15f00 (diff) | |
download | subsurface-1b9581369af95bdf366f08c0d00d24c315d339bb.tar.gz |
Mobile: move tripId from DiveObjectHelper to DiveListModel
The canonical way of displaying lists in Qt is via models.
Thus, return the tripId directly from the DiveListModel instead
of going indirectly via a DiveObjectHelper. In the future, this
will allow us to make the DiveObjectHelper value-based, as it
is not generated numerous times for every list item.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | core/subsurface-qt/DiveObjectHelper.cpp | 5 | ||||
-rw-r--r-- | core/subsurface-qt/DiveObjectHelper.h | 2 | ||||
-rw-r--r-- | mobile-widgets/qml/DiveList.qml | 8 | ||||
-rw-r--r-- | qt-models/divelistmodel.cpp | 3 | ||||
-rw-r--r-- | qt-models/divelistmodel.h | 1 |
5 files changed, 8 insertions, 11 deletions
diff --git a/core/subsurface-qt/DiveObjectHelper.cpp b/core/subsurface-qt/DiveObjectHelper.cpp index d7d92ee90..d4bcfc4e0 100644 --- a/core/subsurface-qt/DiveObjectHelper.cpp +++ b/core/subsurface-qt/DiveObjectHelper.cpp @@ -315,11 +315,6 @@ QVector<CylinderObjectHelper> DiveObjectHelper::cylinderObjects() const return res; } -QString DiveObjectHelper::tripId() const -{ - return m_dive->divetrip ? QString::number((quint64)m_dive->divetrip, 16) : QString(); -} - int DiveObjectHelper::tripNrDives() const { struct dive_trip *dt = m_dive->divetrip; diff --git a/core/subsurface-qt/DiveObjectHelper.h b/core/subsurface-qt/DiveObjectHelper.h index 11416b6c6..f08759389 100644 --- a/core/subsurface-qt/DiveObjectHelper.h +++ b/core/subsurface-qt/DiveObjectHelper.h @@ -40,7 +40,6 @@ class DiveObjectHelper : public QObject { Q_PROPERTY(QStringList cylinderList READ cylinderList CONSTANT) Q_PROPERTY(QStringList cylinders READ cylinders CONSTANT) Q_PROPERTY(QVector<CylinderObjectHelper> cylinderObjects READ cylinderObjects CONSTANT) - Q_PROPERTY(QString tripId READ tripId CONSTANT) Q_PROPERTY(int tripNrDives READ tripNrDives CONSTANT) Q_PROPERTY(int maxcns READ maxcns CONSTANT) Q_PROPERTY(int otu READ otu CONSTANT) @@ -83,7 +82,6 @@ public: QStringList cylinders() const; QString cylinder(int idx) const; QVector<CylinderObjectHelper> cylinderObjects() const; - QString tripId() const; int tripNrDives() const; int maxcns() const; int otu() const; diff --git a/mobile-widgets/qml/DiveList.qml b/mobile-widgets/qml/DiveList.qml index 23537ac79..6be6d6d8f 100644 --- a/mobile-widgets/qml/DiveList.qml +++ b/mobile-widgets/qml/DiveList.qml @@ -57,7 +57,7 @@ Kirigami.ScrollablePage { states: [ State { name: "isHidden"; - when: dive.tripId !== activeTrip && ! diveOutsideTrip + when: tripId !== activeTrip && ! diveOutsideTrip PropertyChanges { target: innerListItem height: 0 @@ -66,7 +66,7 @@ Kirigami.ScrollablePage { }, State { name: "isVisible"; - when: dive.tripId === activeTrip || diveOutsideTrip + when: tripId === activeTrip || diveOutsideTrip PropertyChanges { target: innerListItem height: diveListEntry.height + Kirigami.Units.smallSpacing @@ -129,7 +129,7 @@ Kirigami.ScrollablePage { Item { Rectangle { id: leftBarDive - width: dive.tripId == "" ? 0 : Kirigami.Units.smallSpacing + width: tripId == "" ? 0 : Kirigami.Units.smallSpacing height: diveListEntry.height * 0.8 color: subsurfaceTheme.lightPrimaryColor anchors { @@ -524,7 +524,7 @@ Kirigami.ScrollablePage { maximumFlickVelocity: parent.height * 5 bottomMargin: Kirigami.Units.iconSizes.medium + Kirigami.Units.gridUnit cacheBuffer: 40 // this will increase memory use, but should help with scrolling - section.property: "dive.tripId" + section.property: "tripId" section.criteria: ViewSection.FullString section.delegate: tripHeading section.labelPositioning: ViewSection.CurrentLabelAtStart | ViewSection.InlineLabels diff --git a/qt-models/divelistmodel.cpp b/qt-models/divelistmodel.cpp index cad745dd3..caa31dcae 100644 --- a/qt-models/divelistmodel.cpp +++ b/qt-models/divelistmodel.cpp @@ -240,9 +240,11 @@ QVariant DiveListModel::data(const QModelIndex &index, int role) const return QVariant(); DiveObjectHelper *curr_dive = m_dives[index.row()]; + const dive *d = curr_dive->getDive(); switch(role) { case DiveRole: return QVariant::fromValue<QObject*>(curr_dive); case DiveDateRole: return (qlonglong)curr_dive->timestamp(); + case TripIdRole: return d->divetrip ? QString::number((quint64)d->divetrip, 16) : QString(); } return QVariant(); @@ -253,6 +255,7 @@ QHash<int, QByteArray> DiveListModel::roleNames() const QHash<int, QByteArray> roles; roles[DiveRole] = "dive"; roles[DiveDateRole] = "date"; + roles[TripIdRole] = "tripId"; return roles; } diff --git a/qt-models/divelistmodel.h b/qt-models/divelistmodel.h index 5ac252d60..1cc3abb7d 100644 --- a/qt-models/divelistmodel.h +++ b/qt-models/divelistmodel.h @@ -38,6 +38,7 @@ public: enum DiveListRoles { DiveRole = Qt::UserRole + 1, DiveDateRole, + TripIdRole, }; static DiveListModel *instance(); |