diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2017-06-21 16:30:10 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-06-21 17:20:07 -0700 |
commit | a7fca80a3e8eee3486984b3d34006cfae2b2f844 (patch) | |
tree | baa4d96a1aef68c06b5f0c479e3c02287060a33b /mobile-widgets/qml/DiveDetails.qml | |
parent | 7b7294d1277206f90c366ddc093c452c5eac35d2 (diff) | |
download | subsurface-a7fca80a3e8eee3486984b3d34006cfae2b2f844.tar.gz |
QML UI: don't access dive without modelData
Occasionally I see errors in the log where we would access modelData.dive
with modelData = null. This patch addresses a couple of the spaces where
this happens, but also simplifies the code by using the existing alias.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'mobile-widgets/qml/DiveDetails.qml')
-rw-r--r-- | mobile-widgets/qml/DiveDetails.qml | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/mobile-widgets/qml/DiveDetails.qml b/mobile-widgets/qml/DiveDetails.qml index b4c65088f..bdfda2dc7 100644 --- a/mobile-widgets/qml/DiveDetails.qml +++ b/mobile-widgets/qml/DiveDetails.qml @@ -39,7 +39,7 @@ Kirigami.Page { property alias gpsCheckbox: detailsEdit.gpsCheckbox property int updateCurrentIdx: manager.updateSelectedDive - title: diveDetailsListView.currentItem ? diveDetailsListView.currentItem.modelData.dive.location : qsTr("Dive details") + title: currentItem && currentItem.modelData ? currentItem.modelData.dive.location : qsTr("Dive details") state: "view" leftPadding: 0 topPadding: 0 @@ -53,7 +53,7 @@ Kirigami.Page { target: diveDetailsPage; actions { right: deleteAction - left: diveDetailsListView.currentItem ? (diveDetailsListView.currentItem.modelData.dive.gps !== "" ? mapAction : null) : null + left: currentItem ? (currentItem.modelData && currentItem.modelData.dive.gps !== "" ? mapAction : null) : null } } PropertyChanges { target: detailsEditScroll; sheetOpen: false } @@ -76,7 +76,7 @@ Kirigami.Page { text: qsTr("Delete dive") iconName: "trash-empty" onTriggered: { - var deletedId = diveDetailsListView.currentItem.modelData.dive.id + var deletedId = currentItem.modelData.dive.id var deletedIndex = diveDetailsListView.currentIndex manager.deleteDive(deletedId) stackView.pop() @@ -91,7 +91,7 @@ Kirigami.Page { text: qsTr("Show on map") iconName: "gps" onTriggered: { - showMap(diveDetailsListView.currentItem.modelData.dive.gps_decimal) + showMap(currentItem.modelData.dive.gps_decimal) } } @@ -120,7 +120,7 @@ Kirigami.Page { } onCurrentItemChanged: { - manager.selectedDiveTimestamp = diveDetailsListView.currentItem.modelData.dive.timestamp + manager.selectedDiveTimestamp = currentItem.modelData.dive.timestamp } function showDiveIndex(index) { @@ -138,37 +138,42 @@ Kirigami.Page { } function startEditMode() { + if (!currentItem.modelData) { + console.log("DiveDetails trying to access undefined currentItem.modelData") + return + } + // set things up for editing - so make sure that the detailsEdit has // all the right data (using the property aliases set up above) - dive_id = diveDetailsListView.currentItem.modelData.dive.id - number = diveDetailsListView.currentItem.modelData.dive.number - date = diveDetailsListView.currentItem.modelData.dive.date + " " + diveDetailsListView.currentItem.modelData.dive.time - location = diveDetailsListView.currentItem.modelData.dive.location - gps = diveDetailsListView.currentItem.modelData.dive.gps + dive_id = currentItem.modelData.dive.id + number = currentItem.modelData.dive.number + date = currentItem.modelData.dive.date + " " + currentItem.modelData.dive.time + location = currentItem.modelData.dive.location + gps = currentItem.modelData.dive.gps gpsCheckbox = false - duration = diveDetailsListView.currentItem.modelData.dive.duration - depth = diveDetailsListView.currentItem.modelData.dive.depth - airtemp = diveDetailsListView.currentItem.modelData.dive.airTemp - watertemp = diveDetailsListView.currentItem.modelData.dive.waterTemp - suitIndex = diveDetailsListView.currentItem.modelData.dive.suitList.indexOf(diveDetailsListView.currentItem.modelData.dive.suit) - if (diveDetailsListView.currentItem.modelData.dive.buddy.indexOf(",") > 0) { - buddyIndex = diveDetailsListView.currentItem.modelData.dive.buddyList.indexOf(qsTr("Multiple Buddies")); + duration = currentItem.modelData.dive.duration + depth = currentItem.modelData.dive.depth + airtemp = currentItem.modelData.dive.airTemp + watertemp = currentItem.modelData.dive.waterTemp + suitIndex = currentItem.modelData.dive.suitList.indexOf(currentItem.modelData.dive.suit) + if (currentItem.modelData.dive.buddy.indexOf(",") > 0) { + buddyIndex = currentItem.modelData.dive.buddyList.indexOf(qsTr("Multiple Buddies")); } else { - buddyIndex = diveDetailsListView.currentItem.modelData.dive.buddyList.indexOf(diveDetailsListView.currentItem.modelData.dive.buddy) + buddyIndex = currentItem.modelData.dive.buddyList.indexOf(currentItem.modelData.dive.buddy) } - divemasterIndex = diveDetailsListView.currentItem.modelData.dive.divemasterList.indexOf(diveDetailsListView.currentItem.modelData.dive.divemaster) - notes = diveDetailsListView.currentItem.modelData.dive.notes - if (diveDetailsListView.currentItem.modelData.dive.singleWeight) { + divemasterIndex = currentItem.modelData.dive.divemasterList.indexOf(currentItem.modelData.dive.divemaster) + notes = currentItem.modelData.dive.notes + if (currentItem.modelData.dive.singleWeight) { // we have only one weight, go ahead, have fun and edit it - weight = diveDetailsListView.currentItem.modelData.dive.sumWeight + weight = currentItem.modelData.dive.sumWeight } else { // careful when translating, this text is "magic" in DiveDetailsEdit.qml weight = "cannot edit multiple weight systems" } - startpressure = diveDetailsListView.currentItem.modelData.dive.startPressure - endpressure = diveDetailsListView.currentItem.modelData.dive.endPressure - gasmix = diveDetailsListView.currentItem.modelData.dive.firstGas - cylinderIndex = diveDetailsListView.currentItem.modelData.dive.cylinderList.indexOf(diveDetailsListView.currentItem.modelData.dive.getCylinder) + startpressure = currentItem.modelData.dive.startPressure + endpressure = currentItem.modelData.dive.endPressure + gasmix = currentItem.modelData.dive.firstGas + cylinderIndex = currentItem.modelData.dive.cylinderList.indexOf(currentItem.modelData.dive.getCylinder) diveDetailsPage.state = "edit" } |