GUI: Support for money transfer (by sachy + pasky)

This commit is contained in:
brmbar 2015-10-31 22:02:12 +01:00
parent a162e544c1
commit 5c84bd6a8f

View file

@ -0,0 +1,174 @@
import QtQuick 1.1
Item {
id: page
anchors.fill: parent
property variant userfrom: ""
property variant uidfrom: ""
property variant userto: ""
property variant uidto: ""
property string amount: amount_pad.enteredText
BarcodeInput {
color: "#00ff00" /* just for debugging */
focus: !(parent.userfrom != "" && parent.userto != "")
onAccepted: {
var acct = shop.barcodeInput(text)
text = ""
if (typeof(acct) == "undefined") {
status_text.setStatus("Unknown barcode", "#ff4444")
return
}
if (acct.acctype == "debt") {
if (userfrom == "") {
userfrom = acct.name
uidfrom = acct.id
} else {
userto = acct.name
uidto = acct.id
}
} else if (acct.acctype == "recharge") {
amount = acct.amount
} else {
status_text.setStatus("Unknown barcode", "#ff4444")
}
}
}
Item {
id: amount_row
visible: parent.userfrom != "" && parent.userto != ""
x: 65;
y: 166;
width: 890
height: 60
Text {
id: item_sellprice_label
x: 0
y: 0
height: 60
width: 200
color: "#ffffff"
text: "Money Amount:"
verticalAlignment: Text.AlignVCenter
font.pixelSize: 0.768 * 46
}
Text {
id: amount_input
x: 320
y: 0
height: 60
width: 269
color: "#ffff7c"
text: amount
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
font.pixelSize: 0.768 * 122
}
}
BarNumPad {
id: amount_pad
x: 65
y: 239
visible: parent.userfrom != "" && parent.userto != ""
focus: parent.userfrom != "" && parent.userto != ""
Keys.onReturnPressed: { transfer.buttonClick() }
Keys.onEscapePressed: { cancel.buttonClick() }
}
BarTextHint {
id: barcode_row
x: 65
y: parent.userfrom == "" ? 314 : 414
hint_goal: (parent.userfrom == "" ? "Take money from:" : parent.userto == "" ? "Give money to:" : parent.amount == "" ? "Specify amount" : "")
hint_action: (parent.userfrom == "" || parent.userto == "" ? "Scan barcode now" : (parent.amount ? "" : "(or scan barcode now)"))
}
Text {
id: legend
visible: !(parent.userfrom != "" && parent.userto != "")
x: 65
y: 611
height: 154
width: 894
color: "#71cccc"
text: "This is for transfering credit between two brmbar users.\n May be used instead of *check next club-mate to me*."
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
font.pixelSize: 0.768 * 27
}
Text {
id: item_name
x: 422
y: 156
width: 537
height: 80
color: "#ffffff"
text: parent.userfrom ? parent.userfrom + " →" : "Money Transfer"
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
font.pixelSize: 0.768 * 60
}
Text {
id: item_name2
x: 422
y: 256
width: 537
height: 80
color: "#ffffff"
text: parent.userto ? "→ " + parent.userto : ""
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
font.pixelSize: 0.768 * 60
}
BarButton {
id: transfer
x: 65
y: 838
width: 360
text: "Transfer"
onButtonClick: {
if (userfrom == "") {
status_text.setStatus("Select FROM account.", "#ff4444")
return
}
if (userto == "") {
status_text.setStatus("Select TO account.", "#ff4444")
return
}
if (amount == "") {
status_text.setStatus("Enter amount.", "#ff4444")
return
}
var amount_str = shop.newTransfer(uidfrom, uidto, amount)
if (typeof(amount_str) == "undefined") {
status_text.setStatus("Transfer error.", "#ff4444")
return
}
status_text.setStatus("Transferred " + amount_str + " from " + userfrom + " to " + userto, "#ffff7c")
loadPage("MainPage")
}
}
BarButton {
id: cancel
x: 855
y: 838
width: 360
text: "Cancel"
onButtonClick: {
status_text.setStatus("Transfer cancelled", "#ff4444")
loadPage("MainPage")
}
}
}