diff options
author | Johanna Aijala <johanna.aijala@digia.com> | 2014-09-16 15:14:16 +0300 |
---|---|---|
committer | Topi Reiniö <topi.reinio@digia.com> | 2014-09-25 10:26:26 +0200 |
commit | da217ce941e1f4bde594cf97221f953b106cb15a (patch) | |
tree | 4aede517d3665b8e87685165c721e5b205a3002e /examples | |
parent | 6641214214213f079176b81e9a98d63cf21bfd3c (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')
-rw-r--r-- | examples/quick/demos/calqlatr/calqlatr.qml | 37 | ||||
-rw-r--r-- | examples/quick/demos/calqlatr/content/Button.qml | 7 | ||||
-rw-r--r-- | examples/quick/demos/calqlatr/content/Display.qml | 2 | ||||
-rw-r--r-- | examples/quick/demos/calqlatr/content/calculator.js | 23 |
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" } - - } |