blob: fab6ed439f009e9a803d9dae610d5a8e0678d377 (
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
|
import QtQuick 2.0
import Sailfish.Silica 1.0
import "helpers.js" as Helpers
Page {
id: page
property string modelFilename
property string quantityName
function formatText(value, unit) {
return value.toPrecision(5) + " " + pluralize(unit, value);
}
function updateResult() {
var f = parseFloat(fromField.text);
if (fromField.text.length === 0) {
f = 0.0;
}
if (fromCombo.value.length === 0 || toCombo.value.length === 0)
return;
var model = modelLoader.item;
var result = model.from(fromCombo.value, f);
result = model.to(toCombo.value, result);
resultLabel.text = formatText(result, toCombo.value);
}
function pluralize(s, n) {
if (n !== 1) {
if (s === "inch") {
return "inches";
} else if (s === "foot") {
return "feet";
} else if (s === "celcius") {
return s;
}
return s + "s";
}
return s;
}
Component.onCompleted: {
modelLoader.setSource(modelFilename);
}
Loader {
id: modelLoader
onLoaded: {
fromRepeater.model = modelLoader.item;
toRepeater.model = modelLoader.item;
}
}
Column {
id: column
spacing: Theme.paddingLarge
anchors.fill: parent
PageHeader {
title: Helpers.capitalize(page.quantityName)
}
ComboBox {
id: fromCombo
width: parent.width
label: "From"
menu: ContextMenu {
Repeater {
id: fromRepeater
delegate: MenuItem {
text: title
}
}
}
onValueChanged: updateResult()
}
TextField {
id: fromField
width: parent.width
placeholderText: "enter " + pluralize(fromCombo.value, 0)
inputMethodHints: Qt.ImhFormattedNumbersOnly
EnterKey.onClicked: {
parent.focus = true;
updateResult();
}
}
ComboBox {
id: toCombo
width: parent.width
label: "To"
menu: ContextMenu {
Repeater {
id: toRepeater
delegate: MenuItem {
text: title
}
}
}
onValueChanged: updateResult()
}
SectionHeader {
text: "Result"
}
Label {
id: resultLabel
height: Theme.itemSizeSmall
anchors.horizontalCenter: parent.horizontalCenter
}
}
}
|