summaryrefslogtreecommitdiffstats
path: root/demos/declarative/calculator/calculator.qml
blob: 145435becd77580f54e5155d079591a711778d9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
Rect {
    id: MainWindow;
    width: 320; height: 270; color: "black"

    Script { source: "calculator.js" }

    VerticalLayout {
        spacing: 2; margin: 2

        Rect {
            id: Container
            width: 316; height: 60; z: 2
            pen.color: "white"; color: "#343434"

            Text {
                id: CurNum
                font.bold: true; font.size: 16
                color: "white"
                anchors.right: Container.right
                anchors.rightMargin: 5
                anchors.verticalCenter: Container.verticalCenter
            }

            Text {
                id: CurrentOperation
                color: "white"
                font.bold: true; font.size: 16
                anchors.left: Container.left
                anchors.leftMargin: 5
                anchors.verticalCenter: Container.verticalCenter
            }
        }

        Item {
            width: 320; height: 30

            CalcButton {
                id: AdvancedCheckBox
                x: 55; width: 206
                operation: "Advanced Mode"
                toggable: true
            }
        }

        Item {
            width: 320

            Item {
                id: BasicButtons
                x: 55; width: 160; height: 160

                CalcButton { operation: "Bksp"; id: Bksp; width: 67; opacity: 0 }
                CalcButton { operation: "C"; id: C; width: 76 }
                CalcButton { operation: "AC"; id: AC; x: 78; width: 76 }

                GridLayout {
                    id: NumKeypad; y: 32; spacing: 2; columns: 3

                    CalcButton { operation: 7 }
                    CalcButton { operation: 8 }
                    CalcButton { operation: 9 }
                    CalcButton { operation: 4 }
                    CalcButton { operation: 5 }
                    CalcButton { operation: 6 }
                    CalcButton { operation: 1 }
                    CalcButton { operation: 2 }
                    CalcButton { operation: 3 }
                }

                HorizontalLayout {
                    y: 128; spacing: 2

                    CalcButton { operation: 0; width: 50 }
                    CalcButton { operation: "."; x: 77; width: 50 }
                    CalcButton { operation: "="; id: Equals; x: 77;  width: 102 }
                }

                VerticalLayout {
                    id: SimpleOperations
                    x: 156; y: 0; spacing: 2

                    CalcButton { operation: "x" }
                    CalcButton { operation: "/" }
                    CalcButton { operation: "-" }
                    CalcButton { operation: "+" }
                }
            }

            GridLayout {
                id: AdvancedButtons
                x: 350; spacing: 2; columns: 2; opacity: 0

                CalcButton { operation: "Abs" }
                CalcButton { operation: "Int" }
                CalcButton { operation: "MC" }
                CalcButton { operation: "Sqrt" }
                CalcButton { operation: "MR" }
                CalcButton { operation: "^2" }
                CalcButton { operation: "MS" }
                CalcButton { operation: "1/x" }
                CalcButton { operation: "M+" }
                CalcButton { operation: "+/-" }
            }

        }
    }

    states: [
        State {
            name: "Advanced"; when: AdvancedCheckBox.toggled == true
            SetProperties { target: BasicButtons; x: 0 }
            SetProperties { target: SimpleOperations; y: 32 }
            SetProperties { target: Bksp; opacity: 1 }
            SetProperties { target: C; x: 69; width: 67 }
            SetProperties { target: AC; x: 138; width: 67 }
            SetProperties { target: Equals; width: 50 }
            SetProperties { target: AdvancedButtons; x: 210; opacity: 1 }
        }
    ]

    transitions: [
        Transition {
            NumericAnimation { properties: "x,y,width"; easing: "easeOutBounce"; duration: 500 }
            NumericAnimation { properties: "opacity"; easing: "easeInOutQuad"; duration: 500 }
        }
    ]
}