You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.6 KiB
QML

4 years ago
import QtQuick 2.9
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.5
import QtQuick.Controls.Styles 1.4
import MeuiKit 1.0 as Meui
import Cutefish.Calculator 1.0
Item {
id: zone
ColumnLayout {
id: layout
anchors.fill: parent
anchors.margins: 0
ListView {
id: listView
model: ListModel { id: historyModel }
clip: true
Layout.fillHeight: true
Layout.fillWidth: true
flickableDirection: Flickable.VerticalFlick
ScrollBar.vertical: ScrollBar {}
onCountChanged: {
listView.currentIndex = count - 1
}
delegate: Item {
height: label.implicitHeight + Meui.Units.largeSpacing * 2
width: parent ? parent.width : undefined
Label {
id: label
anchors.fill: parent
horizontalAlignment: Qt.AlignRight
text: historyModel.get(index).text
elide: Text.ElideMiddle
color: Meui.Theme.disabledTextColor
leftPadding: Meui.Units.largeSpacing
rightPadding: Meui.Units.largeSpacing
MouseArea {
hoverEnabled: true
}
}
}
}
CTextField {
id: textField
height: 50
Layout.fillWidth: true
Keys.onReturnPressed: appendToTextField('=')
Keys.onEnterPressed: appendToTextField('=')
leftPadding: Meui.Units.largeSpacing
rightPadding: Meui.Units.largeSpacing
}
}
function appendToTextField(text) {
if (text === '=') {
var res = calculate(textField.text)
if (res !== '') {
var expressionText = textField.text
textField.text = res;
// If the expression and the result area equal,
// it will not be added to the ListView
if (expressionText !== res) {
expressionText = expressionText + " = " + res
historyModel.append({"text": expressionText})
}
}
} else if (text === 'AC/C') {
if (textField.text != "")
textField.clear()
else
historyModel.clear()
} else if (text === 'BACK') {
// backspace
textField.remove(textField.cursorPosition, textField.cursorPosition - 1)
} else {
textField.insert(textField.cursorPosition, text)
}
}
}