summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-08-14 23:53:28 +0200
committerGravatar bstoeger <32835590+bstoeger@users.noreply.github.com>2019-09-14 13:20:59 +0200
commit1b9581369af95bdf366f08c0d00d24c315d339bb (patch)
treea7c38c8993f14acc8eac4d8ba8a6f8d49e0975d8
parentb7cddcc737886ee3e99cee30a78423570de15f00 (diff)
downloadsubsurface-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.cpp5
-rw-r--r--core/subsurface-qt/DiveObjectHelper.h2
-rw-r--r--mobile-widgets/qml/DiveList.qml8
-rw-r--r--qt-models/divelistmodel.cpp3
-rw-r--r--qt-models/divelistmodel.h1
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();