From da217ce941e1f4bde594cf97221f953b106cb15a Mon Sep 17 00:00:00 2001 From: Johanna Aijala Date: Tue, 16 Sep 2014 15:14:16 +0300 Subject: Updated calqlatr demo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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ö --- examples/quick/demos/calqlatr/calqlatr.qml | 37 ++++++++++++++++++++++ examples/quick/demos/calqlatr/content/Button.qml | 7 ---- examples/quick/demos/calqlatr/content/Display.qml | 2 ++ .../quick/demos/calqlatr/content/calculator.js | 23 +++++++++----- 4 files changed, 54 insertions(+), 15 deletions(-) (limited to 'examples/quick/demos') 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" } - - } -- cgit v1.2.3