2019-12-19 07:46:16 -04:00
|
|
|
// SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
|
2019-12-11 13:53:22 -04:00
|
|
|
|
2019-07-13 05:39:01 -04:00
|
|
|
import QtQuick 2.12
|
|
|
|
import QtQuick.Controls 2.12
|
2019-04-28 11:50:46 -04:00
|
|
|
|
|
|
|
ScrollView {
|
2019-09-07 15:42:23 -04:00
|
|
|
id: scrollView
|
2019-12-13 06:22:09 -04:00
|
|
|
opacity: enabled ? 1 : theme.disabledElementsOpacity
|
2019-09-07 15:42:23 -04:00
|
|
|
clip: true
|
|
|
|
ScrollBar.vertical.visible: contentHeight > height
|
|
|
|
|
2019-12-10 17:04:03 -04: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)
|
|
|
|
|
2019-09-07 15:42:23 -04:00
|
|
|
|
|
|
|
default property alias textAreaData: textArea.data
|
|
|
|
|
2019-12-10 17:04:03 -04:00
|
|
|
property string saveName: ""
|
|
|
|
property var saveId: "ALL"
|
|
|
|
property var saveProperties: ["text"]
|
|
|
|
|
2019-04-28 15:13:18 -04:00
|
|
|
property alias backgroundColor: textAreaBackground.color
|
2019-04-28 11:50:46 -04:00
|
|
|
property alias placeholderText: textArea.placeholderText
|
2019-12-11 13:53:22 -04:00
|
|
|
property alias placeholderTextColor: textArea.placeholderTextColor
|
2019-04-28 11:50:46 -04:00
|
|
|
property alias area: textArea
|
2019-12-11 13:53:22 -04:00
|
|
|
property alias text: textArea.text
|
2019-12-13 09:56:52 -04:00
|
|
|
|
2019-12-11 12:42:59 -04:00
|
|
|
property var focusItemOnTab: null
|
2019-12-13 09:56:52 -04:00
|
|
|
property var disabledText: null
|
|
|
|
property string defaultText: ""
|
|
|
|
readonly property bool changed: text !== defaultText
|
|
|
|
|
|
|
|
|
|
|
|
function reset() { area.clear(); text = defaultText }
|
2019-04-28 11:50:46 -04:00
|
|
|
|
|
|
|
|
2019-12-16 04:42:41 -04:00
|
|
|
Behavior on opacity { HNumberAnimation {} }
|
2019-12-13 06:22:09 -04:00
|
|
|
|
2019-04-28 11:50:46 -04:00
|
|
|
TextArea {
|
|
|
|
id: textArea
|
2019-12-13 09:56:52 -04:00
|
|
|
text: defaultText
|
2019-12-11 13:53:22 -04:00
|
|
|
enabled: parent.enabled
|
2019-08-30 18:10:25 -04:00
|
|
|
leftPadding: theme.spacing
|
|
|
|
rightPadding: leftPadding
|
|
|
|
topPadding: theme.spacing / 1.5
|
|
|
|
bottomPadding: topPadding
|
|
|
|
|
2019-04-28 11:50:46 -04:00
|
|
|
readOnly: ! visible
|
|
|
|
selectByMouse: true
|
|
|
|
|
|
|
|
wrapMode: TextEdit.Wrap
|
2019-07-06 17:50:55 -04:00
|
|
|
font.family: theme.fontFamily.sans
|
|
|
|
font.pixelSize: theme.fontSize.normal
|
2019-08-30 17:04:42 -04:00
|
|
|
font.pointSize: -1
|
2019-04-28 15:13:18 -04:00
|
|
|
|
2019-09-07 17:00:12 -04:00
|
|
|
placeholderTextColor: theme.controls.textArea.placeholderText
|
2019-07-24 02:14:34 -04:00
|
|
|
color: theme.controls.textArea.text
|
2019-12-11 13:53:22 -04:00
|
|
|
|
2019-04-28 15:13:18 -04:00
|
|
|
background: Rectangle {
|
|
|
|
id: textAreaBackground
|
2019-07-06 17:50:55 -04:00
|
|
|
color: theme.controls.textArea.background
|
2020-03-15 14:29:20 -04:00
|
|
|
radius: theme.radius
|
2019-04-28 15:13:18 -04:00
|
|
|
}
|
2019-08-22 13:03:26 -04:00
|
|
|
|
2019-08-22 14:23:33 -04:00
|
|
|
Keys.onPressed: if (
|
|
|
|
event.modifiers & Qt.AltModifier ||
|
|
|
|
event.modifiers & Qt.MetaModifier
|
|
|
|
) event.accepted = true
|
2019-12-11 12:42:59 -04:00
|
|
|
|
|
|
|
KeyNavigation.priority: KeyNavigation.BeforeItem
|
|
|
|
KeyNavigation.tab: focusItemOnTab
|
2019-12-11 13:53:22 -04:00
|
|
|
|
2019-12-13 06:22:09 -04:00
|
|
|
|
2019-12-11 13:53:22 -04:00
|
|
|
Binding on color {
|
|
|
|
value: "transparent"
|
2019-12-13 06:22:09 -04:00
|
|
|
when: disabledText !== null && ! textArea.enabled
|
2019-12-11 13:53:22 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
Binding on placeholderTextColor {
|
|
|
|
value: "transparent"
|
2019-12-13 06:22:09 -04:00
|
|
|
when: disabledText !== null && ! textArea.enabled
|
2019-12-11 13:53:22 -04:00
|
|
|
}
|
|
|
|
|
2020-03-17 17:41:15 -04:00
|
|
|
Binding on implicitHeight {
|
|
|
|
value: disabledTextLabel.implicitHeight
|
|
|
|
when: disabledText !== null && ! textArea.enabled
|
|
|
|
}
|
|
|
|
|
2019-12-11 13:53:22 -04:00
|
|
|
Behavior on color { HColorAnimation {} }
|
|
|
|
Behavior on placeholderTextColor { HColorAnimation {} }
|
|
|
|
|
|
|
|
HLabel {
|
2020-03-17 17:41:15 -04:00
|
|
|
id: disabledTextLabel
|
2019-12-11 13:53:22 -04:00
|
|
|
anchors.fill: parent
|
|
|
|
visible: opacity > 0
|
2019-12-13 06:22:09 -04:00
|
|
|
opacity: disabledText !== null && parent.enabled ? 0 : 1
|
|
|
|
text: disabledText || ""
|
2019-12-11 13:53:22 -04:00
|
|
|
|
|
|
|
leftPadding: parent.leftPadding
|
|
|
|
rightPadding: parent.rightPadding
|
|
|
|
topPadding: parent.topPadding
|
|
|
|
bottomPadding: parent.bottomPadding
|
|
|
|
|
2020-03-17 17:41:15 -04:00
|
|
|
wrapMode:
|
|
|
|
parent.wrapMode === TextEdit.Wrap ? Text.Wrap :
|
|
|
|
parent.wrapMode === TextEdit.WordWrap ? Text.WordWrap :
|
|
|
|
parent.wrapMode === TextEdit.WrapAnywhere ? Text.WrapAnywhere :
|
|
|
|
Text.NoWrap
|
|
|
|
|
2019-12-11 13:53:22 -04:00
|
|
|
font.family: parent.font.family
|
|
|
|
font.pixelSize: parent.font.pixelSize
|
|
|
|
|
2019-12-16 04:42:41 -04:00
|
|
|
Behavior on opacity { HNumberAnimation {} }
|
2019-12-11 13:53:22 -04:00
|
|
|
}
|
2019-04-28 11:50:46 -04:00
|
|
|
}
|
|
|
|
}
|