Added controls to edit the role "amount", "factor" and "type" from the expandable item delegate.

This commit is contained in:
2026-03-09 10:35:39 +01:00
parent 609f777d13
commit e76fdaae9f
2 changed files with 67 additions and 5 deletions

View File

@ -11,6 +11,7 @@ Item {
required property string info required property string info
required property int amount required property int amount
required property real factor required property real factor
required property string type
property real detailsOpacity: 0 property real detailsOpacity: 0
width: ListView.view.width width: ListView.view.width
@ -66,7 +67,7 @@ Item {
} }
Text { Text {
text: qsTr("Details") text: qsTr("Description")
font.bold: true font.bold: true
font.pointSize: 9 font.pointSize: 9
opacity: item.detailsOpacity opacity: item.detailsOpacity
@ -108,6 +109,7 @@ Item {
anchors { anchors {
top: moreInfoTitle.bottom top: moreInfoTitle.bottom
bottom: parent.bottom bottom: parent.bottom
topMargin: 5
} }
contentHeight: infoText.height contentHeight: infoText.height
clip: true clip: true
@ -119,11 +121,18 @@ Item {
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
width: details.width width: details.width
} }
Text { Text {
id: amountText id: amountText
text: "Amount: " + item.amount text: "Amount: " + item.amount
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
width: details.width }
SpinBox {
value: item.amount
width: 80
height: 25
onValueModified: item.amount = value
} }
Text { Text {
id: factorText id: factorText
@ -131,6 +140,59 @@ Item {
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
width: details.width width: details.width
} }
SpinBox {
id: spinBox
from: 0
value: decimalToInt(item.factor)
to: decimalToInt(100)
stepSize: decimalFactor
editable: true
property int decimals: 2
property real realValue: value / decimalFactor
readonly property int decimalFactor: Math.pow(10, decimals)
function decimalToInt(decimal) {
return decimal * decimalFactor
}
onValueModified: item.factor = value / decimalFactor
validator: DoubleValidator {
bottom: Math.min(spinBox.from, spinBox.to)
top: Math.max(spinBox.from, spinBox.to)
decimals: spinBox.decimals
notation: DoubleValidator.StandardNotation
}
textFromValue: function (value, locale) {
return Number(value / decimalFactor).toLocaleString(
locale, 'f', spinBox.decimals)
}
valueFromText: function (text, locale) {
return Math.round(Number.fromLocaleString(
locale, text) * decimalFactor)
}
}
Text {
id: typeText
text: "Type: " + item.type
wrapMode: Text.WordWrap
}
ComboBox {
// TODO use model from metadata.h (in some way)
model: ["A", "B", "C", ""]
// BUG type will probably not been updated due to undo/redo step
currentIndex: find(item.type)
Component.onCompleted: currentIndex = find(item.type)
onCurrentTextChanged: {
item.type = currentText
}
width: 80
height: 25
}
} }
} }

View File

@ -12,11 +12,11 @@ Page {
clip: true clip: true
model: mainModel model: mainModel
delegateModelAccess: DelegateModel.ReadWrite
// delegate: ListItemDelegate {} // delegate: ListItemDelegate {}
// delegate: ExpandableItemDelegate {} delegate: ExpandableItemDelegate {}
delegate: EditableItemDelegate {} // delegate: EditableItemDelegate {}
delegateModelAccess: DelegateModel.ReadWrite
header: bannercomponent header: bannercomponent
footer: Rectangle { footer: Rectangle {