moment/src/qml/Base/HScrollableTextArea.qml

100 lines
2.8 KiB
QML
Raw Normal View History

import QtQuick 2.12
import QtQuick.Controls 2.12
ScrollView {
id: scrollView
clip: true
ScrollBar.vertical.visible: contentHeight > height
2019-12-11 08:04:03 +11:00
// Set it only on component creation to avoid binding loops
Component.onCompleted: if (! text) {
text = window.getState(this, "text", "")
textArea.cursorPosition = text.length
}
onTextChanged: window.saveState(this)
default property alias textAreaData: textArea.data
2019-12-11 08:04:03 +11:00
property string saveName: ""
property var saveId: "ALL"
property var saveProperties: ["text"]
2019-04-29 05:13:18 +10:00
property alias backgroundColor: textAreaBackground.color
property alias placeholderText: textArea.placeholderText
property alias placeholderTextColor: textArea.placeholderTextColor
property alias area: textArea
property alias text: textArea.text
property string disabledText: ""
property string disabledTextColor: theme.controls.textArea.disabledText
2019-12-12 03:42:59 +11:00
property var focusItemOnTab: null
TextArea {
id: textArea
enabled: parent.enabled
leftPadding: theme.spacing
rightPadding: leftPadding
topPadding: theme.spacing / 1.5
bottomPadding: topPadding
readOnly: ! visible
selectByMouse: true
wrapMode: TextEdit.Wrap
font.family: theme.fontFamily.sans
font.pixelSize: theme.fontSize.normal
font.pointSize: -1
2019-04-29 05:13:18 +10:00
placeholderTextColor: theme.controls.textArea.placeholderText
color: theme.controls.textArea.text
2019-04-29 05:13:18 +10:00
background: Rectangle {
id: textAreaBackground
color: theme.controls.textArea.background
2019-04-29 05:13:18 +10:00
}
Keys.onPressed: if (
event.modifiers & Qt.AltModifier ||
event.modifiers & Qt.MetaModifier
) event.accepted = true
2019-12-12 03:42:59 +11:00
KeyNavigation.priority: KeyNavigation.BeforeItem
KeyNavigation.tab: focusItemOnTab
Binding on color {
value: "transparent"
when: ! textArea.enabled
}
Binding on placeholderTextColor {
value: "transparent"
when: ! textArea.enabled
}
Behavior on color { HColorAnimation {} }
Behavior on placeholderTextColor { HColorAnimation {} }
HLabel {
anchors.fill: parent
visible: opacity > 0
opacity: parent.enabled ? 0 : 1
color: disabledTextColor
text: disabledText
leftPadding: parent.leftPadding
rightPadding: parent.rightPadding
topPadding: parent.topPadding
bottomPadding: parent.bottomPadding
wrapMode: parent.wrapMode
font.family: parent.font.family
font.pixelSize: parent.font.pixelSize
Behavior on opacity { HOpacityAnimator {} }
}
}
}