aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick/demos/calqlatr
diff options
context:
space:
mode:
authorJohanna Aijala <johanna.aijala@digia.com>2014-09-16 15:14:16 +0300
committerTopi Reiniö <topi.reinio@digia.com>2014-09-25 10:26:26 +0200
commitda217ce941e1f4bde594cf97221f953b106cb15a (patch)
tree4aede517d3665b8e87685165c721e5b205a3002e /examples/quick/demos/calqlatr
parent6641214214213f079176b81e9a98d63cf21bfd3c (diff)
Updated calqlatr demo
Fixes and finetuning of calqlatr demo: - fixed text overlapping, changed max length of a number from 14 to 9 - fixed app "freeze" after entering number of maximum length - implemented +/- operator functionality - fixed listview scrolling, after multiple operations listview was scrolling only when entering '=' leaving the active line hidden when the numbers and operator were typed - added support for entering numbers and certain operators from keyboard - removed commented code Task-number: QTBUG-38818 Change-Id: Ic0ecd2dff68a89007421e95a5bdc3ab7ca2e401d Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Diffstat (limited to 'examples/quick/demos/calqlatr')
-rw-r--r--examples/quick/demos/calqlatr/calqlatr.qml37
-rw-r--r--examples/quick/demos/calqlatr/content/Button.qml7
-rw-r--r--examples/quick/demos/calqlatr/content/Display.qml2
-rw-r--r--examples/quick/demos/calqlatr/content/calculator.js23
4 files changed, 54 insertions, 15 deletions
diff --git a/examples/quick/demos/calqlatr/calqlatr.qml b/examples/quick/demos/calqlatr/calqlatr.qml
index 5f0ebe85a8..02c5b13399 100644
--- a/examples/quick/demos/calqlatr/calqlatr.qml
+++ b/examples/quick/demos/calqlatr/calqlatr.qml
@@ -75,6 +75,43 @@ Rectangle {
}
}
+ Keys.onPressed: {
+ if (event.key == Qt.Key_0)
+ digitPressed("0")
+ else if (event.key == Qt.Key_1)
+ digitPressed("1")
+ else if (event.key == Qt.Key_2)
+ digitPressed("2")
+ else if (event.key == Qt.Key_3)
+ digitPressed("3")
+ else if (event.key == Qt.Key_4)
+ digitPressed("4")
+ else if (event.key == Qt.Key_5)
+ digitPressed("5")
+ else if (event.key == Qt.Key_6)
+ digitPressed("6")
+ else if (event.key == Qt.Key_7)
+ digitPressed("7")
+ else if (event.key == Qt.Key_8)
+ digitPressed("8")
+ else if (event.key == Qt.Key_9)
+ digitPressed("9")
+ else if (event.key == Qt.Key_Plus)
+ operatorPressed("+")
+ else if (event.key == Qt.Key_Minus)
+ operatorPressed("−")
+ else if (event.key == Qt.Key_Asterisk)
+ operatorPressed("×")
+ else if (event.key == Qt.Key_Slash)
+ operatorPressed("÷")
+ else if (event.key == Qt.Key_Enter || event.key == Qt.Key_Return)
+ operatorPressed("=")
+ else if (event.key == Qt.Key_Comma || event.key == Qt.Key_Period)
+ digitPressed(".")
+ else if (event.key == Qt.Key_Backspace)
+ operatorPressed("backspace")
+ }
+
Display {
id: display
x: -16
diff --git a/examples/quick/demos/calqlatr/content/Button.qml b/examples/quick/demos/calqlatr/content/Button.qml
index 3f28e6f3c0..fc6234414f 100644
--- a/examples/quick/demos/calqlatr/content/Button.qml
+++ b/examples/quick/demos/calqlatr/content/Button.qml
@@ -59,18 +59,11 @@ Item {
color: "white"
}
-// Rectangle {
-// color: "red"
-// opacity: 0.2
-// anchors.fill: mouse
-// }
-
MouseArea {
id: mouse
anchors.fill: parent
anchors.margins: -5
onClicked: {
- //parent.clicked()
if (operator)
window.operatorPressed(parent.text)
else
diff --git a/examples/quick/demos/calqlatr/content/Display.qml b/examples/quick/demos/calqlatr/content/Display.qml
index ec8edfea66..97eed1e57e 100644
--- a/examples/quick/demos/calqlatr/content/Display.qml
+++ b/examples/quick/demos/calqlatr/content/Display.qml
@@ -48,6 +48,7 @@ Item {
{
listView.model.append({ "operator": operator, "operand": "" })
enteringDigits = true
+ listView.positionViewAtEnd()
}
function newLine(operator, operand)
@@ -64,6 +65,7 @@ Item {
var i = listView.model.count - 1;
listView.model.get(i).operand = listView.model.get(i).operand + digit;
enteringDigits = true
+ listView.positionViewAtEnd()
}
function clear()
diff --git a/examples/quick/demos/calqlatr/content/calculator.js b/examples/quick/demos/calqlatr/content/calculator.js
index da8e940b16..906cb9d3b7 100644
--- a/examples/quick/demos/calqlatr/content/calculator.js
+++ b/examples/quick/demos/calqlatr/content/calculator.js
@@ -59,7 +59,7 @@ function digitPressed(op)
{
if (disabled(op))
return
- if (digits.toString().length >= 14)
+ if (digits.toString().length >= 8)
return
if (lastOp.toString().length == 1 && ((lastOp >= "0" && lastOp <= "9") || lastOp == ".") ) {
digits = digits + op.toString()
@@ -80,7 +80,7 @@ function operatorPressed(op)
if (previousOperator == "+") {
digits = Number(digits.valueOf()) + Number(curVal.valueOf())
} else if (previousOperator == "−") {
- digits = Number(curVal) - Number(digits.valueOf())
+ digits = Number(curVal.valueOf()) - Number(digits.valueOf())
} else if (previousOperator == "×") {
digits = Number(curVal) * Number(digits.valueOf())
} else if (previousOperator == "÷") {
@@ -91,11 +91,15 @@ function operatorPressed(op)
if (op == "+" || op == "−" || op == "×" || op == "÷") {
previousOperator = op
curVal = digits.valueOf()
+ digits = ""
display.displayOperator(previousOperator)
return
}
if (op == "=") {
+ if (digits.toString().length >= 9)
+ digits = digits.toExponential(2)
+
display.newLine("=", digits.toString())
}
@@ -112,6 +116,8 @@ function operatorPressed(op)
digits = (Math.floor(digits.valueOf())).toString()
} else if (op == "±") {
digits = (digits.valueOf() * -1).toString()
+ display.clear()
+ display.appendDigit(digits)
} else if (op == "√") {
digits = (Math.sqrt(digits.valueOf())).toString()
} else if (op == "mc") {
@@ -122,22 +128,23 @@ function operatorPressed(op)
digits = memory.toString()
} else if (op == "m-") {
memory = digits.valueOf()
- } else if (op == window.leftArrow) {
+ } else if (op == "backspace") {
digits = digits.toString().slice(0, -1)
- if (digits.length == 0) {
- digits = "0"
- }
+ display.clear()
+ display.appendDigit(digits)
} else if (op == "Off") {
Qt.quit();
} else if (op == "C") {
display.clear()
+ curVal = 0
+ memory = 0
+ lastOp = ""
+ digits ="0"
} else if (op == "AC") {
curVal = 0
memory = 0
lastOp = ""
digits ="0"
}
-
-
}