linphone-desktop/Linphone/view/Control/Input/TextArea.qml

85 lines
2.2 KiB
QML

import QtQuick
import QtQuick.Controls.Basic as Control
import QtQuick.Layouts
import Linphone
import UtilsCpp
TextEdit {
id: mainItem
property string placeholderText
property real placeholderPixelSize: Typography.p1.pixelSize
property real placeholderWeight: Typography.p1.weight
property color placeholderTextColor: color
property alias background: background.data
property bool hoverEnabled: true
property bool hovered: mouseArea.hoverEnabled && mouseArea.containsMouse
topPadding: Math.round(5 * DefaultStyle.dp)
bottomPadding: Math.round(5 * DefaultStyle.dp)
activeFocusOnTab: true
property bool displayAsRichText: false
property var encodeTextObj: UtilsCpp.encodeTextToQmlRichFormat(text)
property string richFormatText: encodeTextObj && encodeTextObj.value || ""
property color textAreaColor
Component.onCompleted: {
mainItem.textAreaColor = mainItem.color // backup original color
if (displayAsRichText)
mainItem.color = 'transparent'
}
onTextChanged: {
encodeTextObj = UtilsCpp.encodeTextToQmlRichFormat(text)
}
MouseArea {
id: mouseArea
anchors.fill: parent
enabled: mainItem.hoverEnabled
hoverEnabled: mainItem.hoverEnabled
acceptedButtons: Qt.NoButton
cursorShape: mainItem.hovered ? Qt.IBeamCursor : Qt.ArrowCursor
}
Item {
id: background
anchors.fill: parent
z: -1
}
Text {
anchors.verticalCenter: mainItem.verticalCenter
text: mainItem.placeholderText
color: mainItem.placeholderTextColor
visible: mainItem.text.length == 0 && !mainItem.activeFocus
x: mainItem.leftPadding
font {
pixelSize: mainItem.placeholderPixelSize
weight: mainItem.placeholderWeight
}
}
Text {
id: formattedText
visible: mainItem.displayAsRichText && mainItem.richFormatText !== ""
text: mainItem.richFormatText
textFormat: Text.RichText
wrapMode: mainItem.wrapMode
width: mainItem.width
elide: Text.ElideRight
font: mainItem.font
color: mainItem.textAreaColor
anchors.fill: parent
focus: false
onHoveredLinkChanged: {
mainItem.hovered = mainItem.displayAsRichText && hoveredLink !== ""
}
onLinkActivated: {
if (link.startsWith('sip'))
UtilsCpp.createCall(link)
else
Qt.openUrlExternally(link)
}
}
}