Sale Djenic b3f8af8e06 refactor(@desktop/general): qml code referring to the old code base commented out
Qml code referring to the old code base commented out, but not deleted,
due to easier refactoring the rest of the app.
2022-02-01 11:42:42 +01:00

236 lines
8.0 KiB
QML

import QtQuick 2.13
import QtQuick.Controls 2.13
import StatusQ.Controls 0.1
import StatusQ.Popups 0.1
import utils 1.0
import "../panels"
import "../controls"
Item {
id: inputBox
property alias textField: inputValue
property alias inputLabel: inputLabel
property string placeholderText: "My placeholder"
property string placeholderTextColor: Style.current.secondaryText
property alias text: inputValue.text
property alias maxLength: inputValue.maximumLength
property string validationError: ""
property alias validationErrorAlignment: validationErrorText.horizontalAlignment
property int validationErrorTopMargin: 1
property color validationErrorColor: Style.current.danger
property string label: ""
readonly property bool hasLabel: label !== ""
property color bgColor: Style.current.inputBackground
property url icon: ""
property int iconHeight: 24
property int iconWidth: 24
property bool copyToClipboard: false
property string textToCopy
property bool pasteFromClipboard: false
property bool readOnly: false
property bool keepHeight: false // determine whether validationError should affect item's height
readonly property bool hasIcon: icon.toString() !== ""
readonly property var forceActiveFocus: function () {
inputValue.forceActiveFocus(Qt.MouseFocusReason)
}
readonly property int labelMargin: 7
property int customHeight: 44
property int fontPixelSize: 15
property alias validator: inputValue.validator
signal editingFinished(string inputValue)
signal textEdited(string inputValue)
implicitHeight: inputRectangle.height +
(hasLabel ? inputLabel.height + labelMargin : 0) +
(!keepHeight &&!!validationError ? (validationErrorText.height + validationErrorTopMargin) : 0)
height: implicitHeight
anchors.right: parent.right
anchors.left: parent.left
function resetInternal() {
inputValue.text = ""
validationError = ""
}
StyledText {
id: inputLabel
text: inputBox.label
font.weight: Font.Medium
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: parent.top
anchors.topMargin: 0
font.pixelSize: 13
color: Style.current.textColor
}
Item {
id: inputField
anchors.right: parent.right
anchors.left: parent.left
height: customHeight
anchors.top: inputBox.hasLabel ? inputLabel.bottom : parent.top
anchors.topMargin: inputBox.hasLabel ? inputBox.labelMargin : 0
StyledTextField {
id: inputValue
visible: !inputBox.isTextArea && !inputBox.isSelect
placeholderText: inputBox.placeholderText
placeholderTextColor: inputBox.placeholderTextColor
anchors.top: parent.top
anchors.topMargin: 0
anchors.bottom: parent.bottom
anchors.bottomMargin: 0
anchors.right: clipboardButtonLoader.active ? clipboardButtonLoader.left : parent.right
anchors.rightMargin: parent.rightMargin
anchors.left: parent.left
anchors.leftMargin: 0
leftPadding: inputBox.hasIcon ? iconWidth + 20 : Style.current.padding
selectByMouse: true
font.pixelSize: fontPixelSize
readOnly: inputBox.readOnly
background: Rectangle {
id: inputRectangle
anchors.fill: parent
color: bgColor
radius: Style.current.radius
border.width: (!!validationError || inputValue.focus) ? 1 : 0
border.color: {
if (!!validationError) {
return validationErrorColor
}
if (!inputBox.readOnly && inputValue.focus) {
return Style.current.inputBorderFocus
}
return Style.current.transparent
}
}
onEditingFinished: inputBox.editingFinished(inputBox.text)
onTextEdited: inputBox.textEdited(inputBox.text)
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.RightButton | Qt.LeftButton
onClicked: {
if((mouse.button === Qt.RightButton) && inputValue.canPaste) {
rightClickContextMenu.popup()
}
else {
inputValue.forceActiveFocus(Qt.MouseFocusReason)
}
}
}
}
SVGImage {
id: iconImg
sourceSize.height: iconHeight
sourceSize.width: iconWidth
anchors.left: parent.left
anchors.leftMargin: Style.current.smallPadding
anchors.verticalCenter: parent.verticalCenter
fillMode: Image.PreserveAspectFit
source: inputBox.icon
}
Loader {
id: clipboardButtonLoader
active: inputBox.copyToClipboard || inputBox.pasteFromClipboard
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 8
sourceComponent: Component {
Item {
width: copyBtn.width
height: copyBtn.height
Timer {
id: timer
}
StatusButton {
property bool copied: false
id: copyBtn
text: {
if (copied) {
return inputBox.copyToClipboard ?
//% "Copied"
qsTrId("sharing-copied-to-clipboard") :
//% "Pasted"
qsTrId("pasted")
}
return inputBox.copyToClipboard ?
//% "Copy"
qsTrId("copy-to-clipboard") :
//% "Paste"
qsTrId("paste")
}
height: 28
font.pixelSize: 12
size: StatusBaseButton.Size.Small
onClicked: {
// Not Refactored Yet
// if (inputBox.copyToClipboard) {
// chatsModel.copyToClipboard(inputBox.textToCopy ? inputBox.textToCopy : inputValue.text)
// } else {
// if (inputValue.canPaste) {
// inputValue.paste()
// }
// }
// copyBtn.copied = true
// timer.setTimeout(function() {
// copyBtn.copied = false
// }, 2000);
}
}
}
}
}
}
TextEdit {
visible: !!validationError
id: validationErrorText
text: validationError
anchors.top: inputField.bottom
anchors.topMargin: validationErrorTopMargin
anchors.right: inputField.right
selectByMouse: true
readOnly: true
font.pixelSize: 12
height: 16
color: validationErrorColor
wrapMode: TextEdit.Wrap
}
StatusPopupMenu {
id: rightClickContextMenu
StatusMenuItem {
enabled: inputValue.canPaste
text: qsTrId("Paste")
onTriggered: {
inputValue.paste()
}
}
onClosed: {
inputValue.forceActiveFocus(Qt.MouseFocusReason)
}
}
}
/*##^##
Designer {
D{i:0;formeditorColor:"#c0c0c0";formeditorZoom:1.25}
}
##^##*/