Add text remembering ability to HTextField

This commit is contained in:
miruka 2019-12-10 15:32:42 -04:00
parent 888df282a8
commit 2cd177dc13
6 changed files with 32 additions and 29 deletions

View File

@ -1,3 +1,4 @@
- scale vs current zoom methods?
- better cancel for all boxes - better cancel for all boxes
- Media - Media
@ -78,7 +79,6 @@
- Restoring UI state: - Restoring UI state:
- Composer content - Composer content
- Which element was focused - Which element was focused
- Room member filter field
- Combine events so they take less space - Combine events so they take less space
- After combining is implemented, no need to hide profile changes anymore. - After combining is implemented, no need to hide profile changes anymore.

View File

@ -169,7 +169,6 @@ class UIState(JSONConfigFile):
"collapseAccounts": {}, "collapseAccounts": {},
"page": "Pages/Default.qml", "page": "Pages/Default.qml",
"pageProperties": {}, "pageProperties": {},
"sidePaneFilter": "",
} }

View File

@ -4,6 +4,7 @@ import "../utils.js" as Utils
Drawer { Drawer {
id: drawer id: drawer
objectName: "" // Set one to allow storing the user size to a file
implicitWidth: horizontal ? calculatedSize : parent.width implicitWidth: horizontal ? calculatedSize : parent.width
implicitHeight: vertical ? calculatedSize : parent.height implicitHeight: vertical ? calculatedSize : parent.height

View File

@ -3,6 +3,8 @@ import QtQuick.Controls 2.12
TextField { TextField {
id: field id: field
objectName: "" // Set one to allow remembering the text using a file
selectByMouse: true
leftPadding: theme.spacing leftPadding: theme.spacing
rightPadding: leftPadding rightPadding: leftPadding
topPadding: theme.spacing / 1.5 topPadding: theme.spacing / 1.5
@ -17,6 +19,32 @@ TextField {
theme.controls.textField.focusedText : theme.controls.textField.focusedText :
theme.controls.textField.text theme.controls.textField.text
background: Rectangle {
id: textFieldBackground
color: field.activeFocus ? focusedBackgroundColor : backgroundColor
border.color: error ? errorBorder :
field.activeFocus ? focusedBorderColor : borderColor
border.width: bordered ? theme.controls.textField.borderWidth : 0
Behavior on color { HColorAnimation { factor: 0.25 } }
Behavior on border.color { HColorAnimation { factor: 0.25 } }
}
// Set it only on component creation to avoid binding loops
Component.onCompleted:
if (! text && uiState[objectName]) text = uiState[objectName].text
onTextChanged: {
if (! objectName) return
window.uiState[objectName] = {text}
window.uiStateChanged()
}
Keys.onPressed: if (
event.modifiers & Qt.AltModifier ||
event.modifiers & Qt.MetaModifier
) event.accepted = true // XXX Still needed?
property bool error: false property bool error: false
@ -30,23 +58,4 @@ TextField {
property color focusedBackgroundColor: property color focusedBackgroundColor:
theme.controls.textField.focusedBackground theme.controls.textField.focusedBackground
property color focusedBorderColor: theme.controls.textField.focusedBorder property color focusedBorderColor: theme.controls.textField.focusedBorder
background: Rectangle {
id: textFieldBackground
color: field.activeFocus ? focusedBackgroundColor : backgroundColor
border.color: error ? errorBorder :
field.activeFocus ? focusedBorderColor : borderColor
border.width: bordered ? theme.controls.textField.borderWidth : 0
Behavior on color { HColorAnimation { factor: 0.25 } }
Behavior on border.color { HColorAnimation { factor: 0.25 } }
}
selectByMouse: true
Keys.onPressed: if (
event.modifiers & Qt.AltModifier ||
event.modifiers & Qt.MetaModifier
) event.accepted = true
} }

View File

@ -47,6 +47,7 @@ HColumnLayout {
HTextField { HTextField {
id: filterField id: filterField
objectName: "memberFilterField"
placeholderText: qsTr("Filter members") placeholderText: qsTr("Filter members")
backgroundColor: theme.chat.roomPane.filterMembers.background backgroundColor: theme.chat.roomPane.filterMembers.background
bordered: false bordered: false

View File

@ -22,18 +22,11 @@ HRowLayout {
HTextField { HTextField {
id: filterField id: filterField
objectName: "roomFilterField"
placeholderText: qsTr("Filter rooms") placeholderText: qsTr("Filter rooms")
backgroundColor: theme.mainPane.filterRooms.background backgroundColor: theme.mainPane.filterRooms.background
bordered: false bordered: false
Component.onCompleted: filterField.text = uiState.sidePaneFilter
onTextChanged: {
if (window.uiState.mainPaneFilter === text) return
window.uiState.mainPaneFilter = text
window.uiStateChanged()
}
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true