mobile/dive-list: performance improvement for invalid dives

Small optimization that reduces the number of accesses to the underlying
model.  Instead of evaluating the isInvalid member eight times per
delegate, we only check it once.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2020-04-01 18:05:09 -07:00
parent cf9303c862
commit 66d3eaa943

View file

@ -37,6 +37,7 @@ Kirigami.ScrollablePage {
property variant myData: model property variant myData: model
property var view: ListView.view property var view: ListView.view
property bool selected: !isTrip && current // don't use 'checked' for this as that confuses QML as it tries property bool selected: !isTrip && current // don't use 'checked' for this as that confuses QML as it tries
property bool invalid: isInvalid === true
id: diveOrTripDelegateItem id: diveOrTripDelegateItem
padding: 0 padding: 0
supportsMouseEvents: true supportsMouseEvents: true
@ -182,7 +183,7 @@ Kirigami.ScrollablePage {
id: locationText id: locationText
text: (undefined !== location && "" != location) ? location : qsTr("<unnamed dive site>") text: (undefined !== location && "" != location) ? location : qsTr("<unnamed dive site>")
font.weight: Font.Medium font.weight: Font.Medium
font.strikeout: isInvalid !== undefined ? isInvalid : false font.strikeout: invalid
font.pointSize: subsurfaceTheme.smallPointSize font.pointSize: subsurfaceTheme.smallPointSize
elide: Text.ElideRight elide: Text.ElideRight
maximumLineCount: 1 // needed for elide to work at all maximumLineCount: 1 // needed for elide to work at all
@ -207,7 +208,7 @@ Kirigami.ScrollablePage {
text: (undefined !== dateTime) ? dateTime : "" text: (undefined !== dateTime) ? dateTime : ""
width: Math.max(locationText.width * 0.45, paintedWidth) // helps vertical alignment throughout listview width: Math.max(locationText.width * 0.45, paintedWidth) // helps vertical alignment throughout listview
font.pointSize: subsurfaceTheme.smallPointSize font.pointSize: subsurfaceTheme.smallPointSize
font.strikeout: isInvalid !== undefined ? isInvalid : false font.strikeout: invalid
color: selected ? subsurfaceTheme.darkerPrimaryTextColor : subsurfaceTheme.secondaryTextColor color: selected ? subsurfaceTheme.darkerPrimaryTextColor : subsurfaceTheme.secondaryTextColor
} }
// spacer, just in case // spacer, just in case
@ -220,7 +221,7 @@ Kirigami.ScrollablePage {
text: (undefined !== depthDuration) ? depthDuration : "" text: (undefined !== depthDuration) ? depthDuration : ""
width: Math.max(Kirigami.Units.gridUnit * 3, paintedWidth) // helps vertical alignment throughout listview width: Math.max(Kirigami.Units.gridUnit * 3, paintedWidth) // helps vertical alignment throughout listview
font.pointSize: subsurfaceTheme.smallPointSize font.pointSize: subsurfaceTheme.smallPointSize
font.strikeout: isInvalid !== undefined ? isInvalid : false font.strikeout: invalid
color: selected ? subsurfaceTheme.darkerPrimaryTextColor : subsurfaceTheme.secondaryTextColor color: selected ? subsurfaceTheme.darkerPrimaryTextColor : subsurfaceTheme.secondaryTextColor
} }
} }
@ -228,7 +229,7 @@ Kirigami.ScrollablePage {
id: numberText id: numberText
text: "#" + number text: "#" + number
font.pointSize: subsurfaceTheme.smallPointSize font.pointSize: subsurfaceTheme.smallPointSize
font.strikeout: isInvalid !== undefined ? isInvalid : false font.strikeout: invalid
color: selected ? subsurfaceTheme.darkerPrimaryTextColor : subsurfaceTheme.secondaryTextColor color: selected ? subsurfaceTheme.darkerPrimaryTextColor : subsurfaceTheme.secondaryTextColor
anchors { anchors {
right: parent.right right: parent.right