Only free context if the owning QV8ContextResource gets destroyed
[profile/ivi/qtdeclarative.git] / examples / quick / demos / calqlatr / content / calculator.js
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the examples of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:BSD$
9 ** You may use this file under the terms of the BSD license as follows:
10 **
11 ** "Redistribution and use in source and binary forms, with or without
12 ** modification, are permitted provided that the following conditions are
13 ** met:
14 **   * Redistributions of source code must retain the above copyright
15 **     notice, this list of conditions and the following disclaimer.
16 **   * Redistributions in binary form must reproduce the above copyright
17 **     notice, this list of conditions and the following disclaimer in
18 **     the documentation and/or other materials provided with the
19 **     distribution.
20 **   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
21 **     of its contributors may be used to endorse or promote products derived
22 **     from this software without specific prior written permission.
23 **
24 **
25 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
36 **
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
40
41
42 var curVal = 0
43 var memory = 0
44 var lastOp = ""
45 var previousOperator = ""
46 var digits = ""
47
48 function disabled(op) {
49     if (op == "." && digits.toString().search(/\./) != -1) {
50         return true
51     } else if (op == window.squareRoot &&  digits.toString().search(/-/) != -1) {
52         return true
53     } else {
54         return false
55     }
56 }
57
58 function digitPressed(op)
59 {
60     if (disabled(op))
61         return
62     if (digits.toString().length >= 14)
63         return
64     if (lastOp.toString().length == 1 && ((lastOp >= "0" && lastOp <= "9") || lastOp == ".") ) {
65         digits = digits + op.toString()
66         display.appendDigit(op.toString())
67     } else {
68         digits = op
69         display.appendDigit(op.toString())
70     }
71     lastOp = op
72 }
73
74 function operatorPressed(op)
75 {
76     if (disabled(op))
77         return
78     lastOp = op
79
80     if (previousOperator == "+") {
81         digits = Number(digits.valueOf()) + Number(curVal.valueOf())
82     } else if (previousOperator == "−") {
83         digits = Number(curVal) - Number(digits.valueOf())
84     } else if (previousOperator == "×") {
85         digits = Number(curVal) * Number(digits.valueOf())
86     } else if (previousOperator == "÷") {
87         digits = Number(Number(curVal) / Number(digits.valueOf())).toString()
88     } else if (previousOperator == "=") {
89     }
90
91     if (op == "+" || op == "−" || op == "×" || op == "÷") {
92         previousOperator = op
93         curVal = digits.valueOf()
94         display.displayOperator(previousOperator)
95         return
96     }
97
98     if (op == "=") {
99         display.newLine("=", digits.toString())
100     }
101
102     curVal = 0
103     previousOperator = ""
104
105     if (op == "1/x") {
106         digits = (1 / digits.valueOf()).toString()
107     } else if (op == "x^2") {
108         digits = (digits.valueOf() * digits.valueOf()).toString()
109     } else if (op == "Abs") {
110         digits = (Math.abs(digits.valueOf())).toString()
111     } else if (op == "Int") {
112         digits = (Math.floor(digits.valueOf())).toString()
113     } else if (op == window.plusminus) {
114         digits = (digits.valueOf() * -1).toString()
115     } else if (op == window.squareRoot) {
116         digits = (Math.sqrt(digits.valueOf())).toString()
117     } else if (op == "mc") {
118         memory = 0;
119     } else if (op == "m+") {
120         memory += digits.valueOf()
121     } else if (op == "mr") {
122         digits = memory.toString()
123     } else if (op == "m-") {
124         memory = digits.valueOf()
125     } else if (op == window.leftArrow) {
126         digits = digits.toString().slice(0, -1)
127         if (digits.length == 0) {
128             digits = "0"
129         }
130     } else if (op == "Off") {
131         Qt.quit();
132     } else if (op == "C") {
133         digits = "0"
134     } else if (op == "AC") {
135         curVal = 0
136         memory = 0
137         lastOp = ""
138         digits ="0"
139     }
140
141
142 }
143