parent
8672141a80
commit
a8cd4be5a5
|
@ -58,10 +58,10 @@ Item {
|
||||||
Rectangle {
|
Rectangle {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: maximumHeight != 0 ? Math.min(
|
height: maximumHeight != 0 ? Math.min(
|
||||||
minimumHeight != 0 ? Math.max(statusBaseInput.implicitHeight, minimumHeight)
|
minimumHeight != 0 ? Math.max(statusBaseInput.implicitHeight, minimumHeight)
|
||||||
: implicitHeight,
|
: implicitHeight,
|
||||||
maximumHeight)
|
maximumHeight)
|
||||||
: parent.height
|
: parent.height
|
||||||
color: Theme.palette.baseColor2
|
color: Theme.palette.baseColor2
|
||||||
radius: 8
|
radius: 8
|
||||||
|
|
||||||
|
@ -78,137 +78,138 @@ Item {
|
||||||
return sensor.containsMouse ? Theme.palette.primaryColor2 : "transparent"
|
return sensor.containsMouse ? Theme.palette.primaryColor2 : "transparent"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StatusIcon {
|
||||||
|
id: statusIcon
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.leftMargin: 10
|
||||||
|
anchors.topMargin: 10
|
||||||
|
|
||||||
|
icon: statusBaseInput.icon.name
|
||||||
|
width: statusBaseInput.icon.width
|
||||||
|
height: statusBaseInput.icon.height
|
||||||
|
color: Theme.palette.baseColor1
|
||||||
|
visible: !!statusBaseInput.icon.name
|
||||||
|
}
|
||||||
|
|
||||||
|
Flickable {
|
||||||
|
id: flick
|
||||||
|
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.left: statusIcon.visible ? statusIcon.right : parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.leftMargin: statusIcon.visible ? 8 : statusBaseInput.leftPadding
|
||||||
|
anchors.rightMargin: statusBaseInput.rightPadding + clearable ? clearButtton.width : 0
|
||||||
|
anchors.topMargin: statusBaseInput.topPadding
|
||||||
|
anchors.bottomMargin: statusBaseInput.bottomPadding
|
||||||
|
contentWidth: edit.paintedWidth
|
||||||
|
contentHeight: edit.paintedHeight
|
||||||
|
clip: true
|
||||||
|
|
||||||
|
QC.ScrollBar.vertical: QC.ScrollBar { interactive: multiline }
|
||||||
|
|
||||||
|
|
||||||
|
function ensureVisible(r) {
|
||||||
|
if (contentX >= r.x)
|
||||||
|
contentX = r.x;
|
||||||
|
else if (contentX+width <= r.x+r.width)
|
||||||
|
contentX = r.x+r.width-width;
|
||||||
|
if (contentY >= r.y)
|
||||||
|
contentY = r.y;
|
||||||
|
else if (contentY+height <= r.y+r.height)
|
||||||
|
contentY = r.y+r.height-height;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
TextEdit {
|
||||||
|
id: edit
|
||||||
|
property string previousText: text
|
||||||
|
|
||||||
|
width: flick.width
|
||||||
|
selectByMouse: true
|
||||||
|
selectionColor: Theme.palette.primaryColor2
|
||||||
|
selectedTextColor: color
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
focus: true
|
||||||
|
font.pixelSize: 15
|
||||||
|
font.family: Theme.palette.baseFont.name
|
||||||
|
color: Theme.palette.directColor1
|
||||||
|
onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
|
||||||
|
wrapMode: statusBaseInput.multiline ? Text.WrapAtWordBoundaryOrAnywhere : TextEdit.NoWrap
|
||||||
|
|
||||||
|
onActiveFocusChanged: {
|
||||||
|
if (statusBaseInput.pristine) {
|
||||||
|
statusBaseInput.pristine = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Keys.onReturnPressed: {
|
||||||
|
if (multiline) {
|
||||||
|
event.accepted = false
|
||||||
|
} else {
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Keys.onEnterPressed: {
|
||||||
|
if (multiline) {
|
||||||
|
event.accepted = false
|
||||||
|
} else {
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onTextChanged: {
|
||||||
|
statusBaseInput.dirty = true
|
||||||
|
if (statusBaseInput.maximumLength > 0) {
|
||||||
|
if (text.length > statusBaseInput.maximumLength) {
|
||||||
|
var cursor = cursorPosition;
|
||||||
|
text = previousText;
|
||||||
|
if (cursor > text.length) {
|
||||||
|
cursorPosition = text.length;
|
||||||
|
} else {
|
||||||
|
cursorPosition = cursor-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
previousText = text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
StatusBaseText {
|
||||||
|
id: placeholder
|
||||||
|
visible: edit.text.length === 0
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
font.pixelSize: 15
|
||||||
|
|
||||||
|
elide: StatusBaseText.ElideRight
|
||||||
|
font.family: Theme.palette.baseFont.name
|
||||||
|
color: statusBaseInput.enabled ? Theme.palette.baseColor1 :
|
||||||
|
Theme.palette.directColor6
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // Flickable
|
||||||
MouseArea {
|
MouseArea {
|
||||||
id: sensor
|
id: sensor
|
||||||
|
enabled: !edit.activeFocus
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
cursorShape: Qt.IBeamCursor
|
cursorShape: Qt.IBeamCursor
|
||||||
onClicked: edit.forceActiveFocus()
|
onClicked: edit.forceActiveFocus()
|
||||||
|
}
|
||||||
StatusIcon {
|
|
||||||
id: statusIcon
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.leftMargin: 10
|
|
||||||
anchors.topMargin: 10
|
|
||||||
|
|
||||||
icon: statusBaseInput.icon.name
|
|
||||||
width: statusBaseInput.icon.width
|
|
||||||
height: statusBaseInput.icon.height
|
|
||||||
color: Theme.palette.baseColor1
|
|
||||||
visible: !!statusBaseInput.icon.name
|
|
||||||
}
|
|
||||||
|
|
||||||
Flickable {
|
|
||||||
id: flick
|
|
||||||
|
|
||||||
anchors.top: parent.top
|
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
anchors.left: statusIcon.visible ? statusIcon.right : parent.left
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.leftMargin: statusIcon.visible ? 8 : statusBaseInput.leftPadding
|
|
||||||
anchors.rightMargin: statusBaseInput.rightPadding + clearable ? clearButtton.width : 0
|
|
||||||
anchors.topMargin: statusBaseInput.topPadding
|
|
||||||
anchors.bottomMargin: statusBaseInput.bottomPadding
|
|
||||||
contentWidth: edit.paintedWidth
|
|
||||||
contentHeight: edit.paintedHeight
|
|
||||||
clip: true
|
|
||||||
|
|
||||||
QC.ScrollBar.vertical: QC.ScrollBar { interactive: multiline }
|
|
||||||
|
|
||||||
|
|
||||||
function ensureVisible(r) {
|
|
||||||
if (contentX >= r.x)
|
|
||||||
contentX = r.x;
|
|
||||||
else if (contentX+width <= r.x+r.width)
|
|
||||||
contentX = r.x+r.width-width;
|
|
||||||
if (contentY >= r.y)
|
|
||||||
contentY = r.y;
|
|
||||||
else if (contentY+height <= r.y+r.height)
|
|
||||||
contentY = r.y+r.height-height;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TextEdit {
|
|
||||||
id: edit
|
|
||||||
property string previousText: text
|
|
||||||
|
|
||||||
width: flick.width
|
|
||||||
selectByMouse: true
|
|
||||||
selectionColor: Theme.palette.primaryColor2
|
|
||||||
selectedTextColor: color
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
focus: true
|
|
||||||
font.pixelSize: 15
|
|
||||||
font.family: Theme.palette.baseFont.name
|
|
||||||
color: Theme.palette.directColor1
|
|
||||||
onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
|
|
||||||
wrapMode: statusBaseInput.multiline ? Text.WrapAtWordBoundaryOrAnywhere : TextEdit.NoWrap
|
|
||||||
|
|
||||||
onActiveFocusChanged: {
|
|
||||||
if (statusBaseInput.pristine) {
|
|
||||||
statusBaseInput.pristine = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Keys.onReturnPressed: {
|
|
||||||
if (multiline) {
|
|
||||||
event.accepted = false
|
|
||||||
} else {
|
|
||||||
event.accepted = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Keys.onEnterPressed: {
|
|
||||||
if (multiline) {
|
|
||||||
event.accepted = false
|
|
||||||
} else {
|
|
||||||
event.accepted = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onTextChanged: {
|
|
||||||
statusBaseInput.dirty = true
|
|
||||||
if (statusBaseInput.maximumLength > 0) {
|
|
||||||
if (text.length > statusBaseInput.maximumLength) {
|
|
||||||
var cursor = cursorPosition;
|
|
||||||
text = previousText;
|
|
||||||
if (cursor > text.length) {
|
|
||||||
cursorPosition = text.length;
|
|
||||||
} else {
|
|
||||||
cursorPosition = cursor-1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
previousText = text
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
StatusBaseText {
|
|
||||||
id: placeholder
|
|
||||||
visible: edit.text.length === 0
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
font.pixelSize: 15
|
|
||||||
|
|
||||||
elide: StatusBaseText.ElideRight
|
|
||||||
font.family: Theme.palette.baseFont.name
|
|
||||||
color: statusBaseInput.enabled ? Theme.palette.baseColor1 :
|
|
||||||
Theme.palette.directColor6
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} // Flickable
|
|
||||||
|
|
||||||
} // Rectangle
|
} // Rectangle
|
||||||
|
|
||||||
StatusFlatRoundButton {
|
StatusFlatRoundButton {
|
||||||
id: clearButtton
|
id: clearButtton
|
||||||
visible: edit.text.length != 0 &&
|
visible: edit.text.length != 0 &&
|
||||||
statusBaseInput.clearable &&
|
statusBaseInput.clearable &&
|
||||||
!statusBaseInput.multiline &&
|
!statusBaseInput.multiline &&
|
||||||
edit.activeFocus
|
edit.activeFocus
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
anchors.rightMargin: 11
|
anchors.rightMargin: 11
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
|
Loading…
Reference in New Issue