mirror of
https://gitlab.com/kelteseth/ScreenPlay.git
synced 2024-10-06 09:17:07 +02:00
Fix Qt 6.5 beta3 Text field changes
This commit is contained in:
parent
bca5f989b8
commit
531860884e
@ -1,169 +1,31 @@
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Window
|
import QtQuick.Window
|
||||||
import QtQuick.Controls.Material
|
import QtQuick.Controls.Material
|
||||||
import QtQuick.Controls as QQC
|
import QtQuick.Controls
|
||||||
import Qt5Compat.GraphicalEffects
|
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import ScreenPlayApp
|
import ScreenPlayApp
|
||||||
import ScreenPlay
|
import ScreenPlay
|
||||||
|
|
||||||
Item {
|
ColumnLayout {
|
||||||
id: root
|
id:root
|
||||||
|
|
||||||
property bool required: false
|
implicitHeight: 70
|
||||||
property bool dirty: false
|
implicitWidth: 150
|
||||||
property alias text: textField.text
|
property alias text: textField.text
|
||||||
property alias placeholderText: txtPlaceholder.text
|
property alias placeholderText: textField.placeholderText
|
||||||
|
property bool required: false
|
||||||
|
|
||||||
signal editingFinished
|
TextField {
|
||||||
|
|
||||||
height: 55
|
|
||||||
width: 150
|
|
||||||
state: {
|
|
||||||
if (textField.text.length > 0)
|
|
||||||
return "containsTextEditingFinished";
|
|
||||||
else
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
onEditingFinished: {
|
|
||||||
if (!root.required)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Text {
|
|
||||||
id: txtPlaceholder
|
|
||||||
|
|
||||||
text: qsTr("Label")
|
|
||||||
font.family: App.settings.font
|
|
||||||
color: Material.primaryTextColor
|
|
||||||
opacity: 0.4
|
|
||||||
font.pointSize: 11
|
|
||||||
font.weight: Font.Medium
|
|
||||||
|
|
||||||
anchors {
|
|
||||||
top: parent.top
|
|
||||||
topMargin: 15
|
|
||||||
left: parent.left
|
|
||||||
leftMargin: 10
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Timer {
|
|
||||||
id: timerSaveDelay
|
|
||||||
|
|
||||||
interval: 1000
|
|
||||||
onTriggered: root.editingFinished()
|
|
||||||
}
|
|
||||||
|
|
||||||
QQC.TextField {
|
|
||||||
id: textField
|
id: textField
|
||||||
|
font.weight: Font.Medium
|
||||||
function resetState() {
|
Layout.fillWidth: true
|
||||||
if (textField.text.length === 0)
|
|
||||||
root.state = "";
|
|
||||||
textField.focus = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
font.family: App.settings.font
|
|
||||||
color: Material.secondaryTextColor
|
|
||||||
placeholderTextColor: Material.secondaryTextColor
|
|
||||||
width: parent.width
|
|
||||||
Keys.onEscapePressed: resetState()
|
|
||||||
onTextEdited: {
|
|
||||||
timerSaveDelay.start();
|
|
||||||
root.dirty = true;
|
|
||||||
}
|
|
||||||
onEditingFinished: {
|
|
||||||
resetState();
|
|
||||||
if (textField.text.length > 0)
|
|
||||||
root.state = "containsTextEditingFinished";
|
|
||||||
}
|
|
||||||
onPressed: {
|
|
||||||
root.state = "containsText";
|
|
||||||
}
|
|
||||||
|
|
||||||
anchors {
|
|
||||||
left: parent.left
|
|
||||||
right: parent.right
|
|
||||||
bottom: parent.bottom
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
id: requiredText
|
id: requiredText
|
||||||
|
text: root.required ? qsTr("*Required") : ""
|
||||||
text: qsTr("*Required")
|
|
||||||
visible: root.required
|
|
||||||
font.family: App.settings.font
|
font.family: App.settings.font
|
||||||
color: Material.secondaryTextColor
|
color: Material.secondaryTextColor
|
||||||
|
Layout.alignment: Qt.AlignRight
|
||||||
anchors {
|
|
||||||
top: textField.bottom
|
|
||||||
right: textField.right
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
states: [
|
|
||||||
State {
|
|
||||||
name: ""
|
|
||||||
|
|
||||||
PropertyChanges {
|
|
||||||
target: txtPlaceholder
|
|
||||||
font.pointSize: 11
|
|
||||||
color: Material.secondaryTextColor
|
|
||||||
anchors.topMargin: 15
|
|
||||||
anchors.leftMargin: 10
|
|
||||||
}
|
|
||||||
},
|
|
||||||
State {
|
|
||||||
name: "containsText"
|
|
||||||
|
|
||||||
PropertyChanges {
|
|
||||||
target: txtPlaceholder
|
|
||||||
font.pointSize: 8
|
|
||||||
opacity: 1
|
|
||||||
color: Material.accentColor
|
|
||||||
anchors.topMargin: 0
|
|
||||||
anchors.leftMargin: 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
State {
|
|
||||||
name: "containsTextEditingFinished"
|
|
||||||
|
|
||||||
PropertyChanges {
|
|
||||||
target: txtPlaceholder
|
|
||||||
font.pointSize: 8
|
|
||||||
color: Material.secondaryTextColor
|
|
||||||
opacity: 0.4
|
|
||||||
anchors.topMargin: 0
|
|
||||||
anchors.leftMargin: 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
transitions: [
|
|
||||||
Transition {
|
|
||||||
from: ""
|
|
||||||
to: "containsText"
|
|
||||||
reversible: true
|
|
||||||
|
|
||||||
PropertyAnimation {
|
|
||||||
target: txtPlaceholder
|
|
||||||
duration: 150
|
|
||||||
easing.type: Easing.InOutQuart
|
|
||||||
properties: "font.pointSize,anchors.topMargin,anchors.leftMargin,opacity,color"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
Transition {
|
|
||||||
from: "containsText"
|
|
||||||
to: "containsTextEditingFinished"
|
|
||||||
reversible: true
|
|
||||||
|
|
||||||
PropertyAnimation {
|
|
||||||
target: txtPlaceholder
|
|
||||||
duration: 150
|
|
||||||
easing.type: Easing.OutSine
|
|
||||||
properties: "color,opacity"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user