Fix various bugs in calqlatr
authorShawn Rutledge <shawn.rutledge@digia.com>
Wed, 29 May 2013 13:22:32 +0000 (15:22 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 30 May 2013 10:07:24 +0000 (12:07 +0200)
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>
examples/quick/demos/calqlatr/calqlatr.pro
examples/quick/demos/calqlatr/calqlatr.qml
examples/quick/demos/calqlatr/content/Display.qml
examples/quick/demos/calqlatr/content/NumberPad.qml
examples/quick/demos/calqlatr/content/calculator.js

index 1b002a5..91d52a2 100644 (file)
@@ -6,5 +6,24 @@ SOURCES += main.cpp
 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
index 16b2e19..0a092c2 100644 (file)
@@ -57,7 +57,7 @@ Rectangle {
 
     Item {
         id: pad
-        width: window.width * 0.58
+        width: 180
         NumberPad { y: 10; anchors.horizontalCenter: parent.horizontalCenter }
     }
 
@@ -77,7 +77,7 @@ Rectangle {
     Display {
         id: display
         x: -16
-        width: window.width * 0.42
+        width: window.width - pad.width
         height: parent.height
 
         MouseArea {
@@ -85,7 +85,12 @@ Rectangle {
             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
index 4a78a3e..ec8edfe 100644 (file)
@@ -42,23 +42,38 @@ import QtQuick 2.0
 
 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 {
@@ -87,6 +102,7 @@ Item {
         }
 
         Image {
+            id: grip
             source: "images/paper-grip.png"
             anchors.horizontalCenter: parent.horizontalCenter
             anchors.bottom: parent.bottom
@@ -97,7 +113,7 @@ Item {
             id: listView
             x: 16; y: 30
             width: display.width
-            height: display.height
+            height: display.height - 50 - y
             delegate: Item {
                 height: 20
                 width: parent.width
index 3203e18..c7f2680 100644 (file)
@@ -60,7 +60,7 @@ Grid {
     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 }
index d86fecb..da8e940 100644 (file)
@@ -84,7 +84,7 @@ function operatorPressed(op)
     } 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 == "=") {
     }
 
@@ -110,9 +110,9 @@ function operatorPressed(op)
         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;
@@ -130,7 +130,7 @@ function operatorPressed(op)
     } else if (op == "Off") {
         Qt.quit();
     } else if (op == "C") {
-        digits = "0"
+        display.clear()
     } else if (op == "AC") {
         curVal = 0
         memory = 0