It's still not a great example but at least it's somewhat usable now.
- added files to .pro so you see them all in Creator
- keypad is fixed size and the "tape" takes up the rest, so you can
resize the window to be able to see long numbers
- you can flick the ListView (MouseArea not on top of the whole thing!)
- ListView scrolls to the bottom when you add numbers past the point
that scrolling is necessary to see them
- Clear, sqrt and +/- keys are functional
Task-number: QTBUG-26556
Change-Id: I485e4123ad6c24ca64bad3efc3acfc14587268d8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
RESOURCES += calqlatr.qrc \
../../shared/shared.qrc
+OTHER_FILES = calqlatr.qml \
+ content/Button.qml \
+ content/Display.qml \
+ content/NumberPad.qml \
+ content/StyleLabel.qml \
+ content/audio/touch.wav \
+ content/calculator.js \
+ content/images/icon-back.png \
+ content/images/icon-close.png \
+ content/images/icon-settings.png \
+ content/images/logo.png \
+ content/images/paper-edge-left.png \
+ content/images/paper-edge-right.png \
+ content/images/paper-grip.png \
+ content/images/settings-selected-a.png \
+ content/images/settings-selected-b.png \
+ content/images/touch-green.png \
+ content/images/touch-white.png
+
target.path = $$[QT_INSTALL_EXAMPLES]/quick/demos/calqlatr
INSTALLS += target
Item {
id: pad
- width: window.width * 0.58
+ width: 180
NumberPad { y: 10; anchors.horizontalCenter: parent.horizontalCenter }
}
Display {
id: display
x: -16
- width: window.width * 0.42
+ width: window.width - pad.width
height: parent.height
MouseArea {
property real oldP: 0
property bool rewind: false
- anchors.fill: parent
+ anchors {
+ bottom: parent.bottom
+ left: parent.left
+ right: parent.right
+ }
+ height: 50
onPositionChanged: {
var reverse = startX > window.width / 2
var mx = mapToItem(window, mouse.x).x
Item {
id: display
+ property bool enteringDigits: false
function displayOperator(operator)
{
listView.model.append({ "operator": operator, "operand": "" })
+ enteringDigits = true
}
function newLine(operator, operand)
{
listView.model.append({ "operator": operator, "operand": operand })
+ enteringDigits = false
+ listView.positionViewAtEnd()
}
function appendDigit(digit)
{
- if (!listView.model.count)
+ if (!enteringDigits)
listView.model.append({ "operator": "", "operand": "" })
var i = listView.model.count - 1;
listView.model.get(i).operand = listView.model.get(i).operand + digit;
+ enteringDigits = true
+ }
+
+ function clear()
+ {
+ if (enteringDigits) {
+ var i = listView.model.count - 1
+ if (i >= 0)
+ listView.model.remove(i)
+ enteringDigits = false
+ }
}
Item {
}
Image {
+ id: grip
source: "images/paper-grip.png"
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
id: listView
x: 16; y: 30
width: display.width
- height: display.height
+ height: display.height - 50 - y
delegate: Item {
height: 20
width: parent.width
Button { text: "±"; color: "#6da43d"; operator: true }
Button { text: "−"; color: "#6da43d"; operator: true }
Button { text: "+"; color: "#6da43d"; operator: true }
- Button { text: " "; color: "#6da43d"; operator: true }
+ Button { text: "√"; color: "#6da43d"; operator: true }
Button { text: "÷"; color: "#6da43d"; operator: true }
Button { text: "×"; color: "#6da43d"; operator: true }
Button { text: "C"; color: "#6da43d"; operator: true }
} else if (previousOperator == "×") {
digits = Number(curVal) * Number(digits.valueOf())
} else if (previousOperator == "÷") {
- digits = Number(Number(curVal) / Number(digits.valueOf())).toString()
+ digits = Number(curVal) / Number(digits.valueOf())
} else if (previousOperator == "=") {
}
digits = (Math.abs(digits.valueOf())).toString()
} else if (op == "Int") {
digits = (Math.floor(digits.valueOf())).toString()
- } else if (op == window.plusminus) {
+ } else if (op == "±") {
digits = (digits.valueOf() * -1).toString()
- } else if (op == window.squareRoot) {
+ } else if (op == "√") {
digits = (Math.sqrt(digits.valueOf())).toString()
} else if (op == "mc") {
memory = 0;
} else if (op == "Off") {
Qt.quit();
} else if (op == "C") {
- digits = "0"
+ display.clear()
} else if (op == "AC") {
curVal = 0
memory = 0