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>
This commit is contained in:
Dirk Hohndel 2017-06-21 16:30:10 -07:00
parent 7b7294d127
commit a7fca80a3e

View file

@ -39,7 +39,7 @@ Kirigami.Page {
property alias gpsCheckbox: detailsEdit.gpsCheckbox property alias gpsCheckbox: detailsEdit.gpsCheckbox
property int updateCurrentIdx: manager.updateSelectedDive 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" state: "view"
leftPadding: 0 leftPadding: 0
topPadding: 0 topPadding: 0
@ -53,7 +53,7 @@ Kirigami.Page {
target: diveDetailsPage; target: diveDetailsPage;
actions { actions {
right: deleteAction 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 } PropertyChanges { target: detailsEditScroll; sheetOpen: false }
@ -76,7 +76,7 @@ Kirigami.Page {
text: qsTr("Delete dive") text: qsTr("Delete dive")
iconName: "trash-empty" iconName: "trash-empty"
onTriggered: { onTriggered: {
var deletedId = diveDetailsListView.currentItem.modelData.dive.id var deletedId = currentItem.modelData.dive.id
var deletedIndex = diveDetailsListView.currentIndex var deletedIndex = diveDetailsListView.currentIndex
manager.deleteDive(deletedId) manager.deleteDive(deletedId)
stackView.pop() stackView.pop()
@ -91,7 +91,7 @@ Kirigami.Page {
text: qsTr("Show on map") text: qsTr("Show on map")
iconName: "gps" iconName: "gps"
onTriggered: { onTriggered: {
showMap(diveDetailsListView.currentItem.modelData.dive.gps_decimal) showMap(currentItem.modelData.dive.gps_decimal)
} }
} }
@ -120,7 +120,7 @@ Kirigami.Page {
} }
onCurrentItemChanged: { onCurrentItemChanged: {
manager.selectedDiveTimestamp = diveDetailsListView.currentItem.modelData.dive.timestamp manager.selectedDiveTimestamp = currentItem.modelData.dive.timestamp
} }
function showDiveIndex(index) { function showDiveIndex(index) {
@ -138,37 +138,42 @@ Kirigami.Page {
} }
function startEditMode() { 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 // set things up for editing - so make sure that the detailsEdit has
// all the right data (using the property aliases set up above) // all the right data (using the property aliases set up above)
dive_id = diveDetailsListView.currentItem.modelData.dive.id dive_id = currentItem.modelData.dive.id
number = diveDetailsListView.currentItem.modelData.dive.number number = currentItem.modelData.dive.number
date = diveDetailsListView.currentItem.modelData.dive.date + " " + diveDetailsListView.currentItem.modelData.dive.time date = currentItem.modelData.dive.date + " " + currentItem.modelData.dive.time
location = diveDetailsListView.currentItem.modelData.dive.location location = currentItem.modelData.dive.location
gps = diveDetailsListView.currentItem.modelData.dive.gps gps = currentItem.modelData.dive.gps
gpsCheckbox = false gpsCheckbox = false
duration = diveDetailsListView.currentItem.modelData.dive.duration duration = currentItem.modelData.dive.duration
depth = diveDetailsListView.currentItem.modelData.dive.depth depth = currentItem.modelData.dive.depth
airtemp = diveDetailsListView.currentItem.modelData.dive.airTemp airtemp = currentItem.modelData.dive.airTemp
watertemp = diveDetailsListView.currentItem.modelData.dive.waterTemp watertemp = currentItem.modelData.dive.waterTemp
suitIndex = diveDetailsListView.currentItem.modelData.dive.suitList.indexOf(diveDetailsListView.currentItem.modelData.dive.suit) suitIndex = currentItem.modelData.dive.suitList.indexOf(currentItem.modelData.dive.suit)
if (diveDetailsListView.currentItem.modelData.dive.buddy.indexOf(",") > 0) { if (currentItem.modelData.dive.buddy.indexOf(",") > 0) {
buddyIndex = diveDetailsListView.currentItem.modelData.dive.buddyList.indexOf(qsTr("Multiple Buddies")); buddyIndex = currentItem.modelData.dive.buddyList.indexOf(qsTr("Multiple Buddies"));
} else { } 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) divemasterIndex = currentItem.modelData.dive.divemasterList.indexOf(currentItem.modelData.dive.divemaster)
notes = diveDetailsListView.currentItem.modelData.dive.notes notes = currentItem.modelData.dive.notes
if (diveDetailsListView.currentItem.modelData.dive.singleWeight) { if (currentItem.modelData.dive.singleWeight) {
// we have only one weight, go ahead, have fun and edit it // we have only one weight, go ahead, have fun and edit it
weight = diveDetailsListView.currentItem.modelData.dive.sumWeight weight = currentItem.modelData.dive.sumWeight
} else { } else {
// careful when translating, this text is "magic" in DiveDetailsEdit.qml // careful when translating, this text is "magic" in DiveDetailsEdit.qml
weight = "cannot edit multiple weight systems" weight = "cannot edit multiple weight systems"
} }
startpressure = diveDetailsListView.currentItem.modelData.dive.startPressure startpressure = currentItem.modelData.dive.startPressure
endpressure = diveDetailsListView.currentItem.modelData.dive.endPressure endpressure = currentItem.modelData.dive.endPressure
gasmix = diveDetailsListView.currentItem.modelData.dive.firstGas gasmix = currentItem.modelData.dive.firstGas
cylinderIndex = diveDetailsListView.currentItem.modelData.dive.cylinderList.indexOf(diveDetailsListView.currentItem.modelData.dive.getCylinder) cylinderIndex = currentItem.modelData.dive.cylinderList.indexOf(currentItem.modelData.dive.getCylinder)
diveDetailsPage.state = "edit" diveDetailsPage.state = "edit"
} }