Add text remembering ability to HTextField
This commit is contained in:
		
							
								
								
									
										2
									
								
								TODO.md
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								TODO.md
									
									
									
									
									
								
							@@ -1,3 +1,4 @@
 | 
			
		||||
- scale vs current zoom methods?
 | 
			
		||||
- better cancel for all boxes
 | 
			
		||||
 | 
			
		||||
- Media
 | 
			
		||||
@@ -78,7 +79,6 @@
 | 
			
		||||
  - Restoring UI state:
 | 
			
		||||
    - Composer content
 | 
			
		||||
    - Which element was focused
 | 
			
		||||
    - Room member filter field
 | 
			
		||||
 | 
			
		||||
  - Combine events so they take less space
 | 
			
		||||
    - After combining is implemented, no need to hide profile changes anymore.
 | 
			
		||||
 
 | 
			
		||||
@@ -169,7 +169,6 @@ class UIState(JSONConfigFile):
 | 
			
		||||
            "collapseAccounts": {},
 | 
			
		||||
            "page":             "Pages/Default.qml",
 | 
			
		||||
            "pageProperties":   {},
 | 
			
		||||
            "sidePaneFilter":   "",
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import "../utils.js" as Utils
 | 
			
		||||
 | 
			
		||||
Drawer {
 | 
			
		||||
    id: drawer
 | 
			
		||||
    objectName: ""  // Set one to allow storing the user size to a file
 | 
			
		||||
    implicitWidth: horizontal ? calculatedSize : parent.width
 | 
			
		||||
    implicitHeight: vertical ? calculatedSize : parent.height
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,8 @@ import QtQuick.Controls 2.12
 | 
			
		||||
 | 
			
		||||
TextField {
 | 
			
		||||
    id: field
 | 
			
		||||
    objectName: ""  // Set one to allow remembering the text using a file
 | 
			
		||||
    selectByMouse: true
 | 
			
		||||
    leftPadding: theme.spacing
 | 
			
		||||
    rightPadding: leftPadding
 | 
			
		||||
    topPadding: theme.spacing / 1.5
 | 
			
		||||
@@ -17,6 +19,32 @@ TextField {
 | 
			
		||||
           theme.controls.textField.focusedText :
 | 
			
		||||
           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
 | 
			
		||||
 | 
			
		||||
@@ -30,23 +58,4 @@ TextField {
 | 
			
		||||
    property color focusedBackgroundColor:
 | 
			
		||||
        theme.controls.textField.focusedBackground
 | 
			
		||||
    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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -47,6 +47,7 @@ HColumnLayout {
 | 
			
		||||
 | 
			
		||||
        HTextField {
 | 
			
		||||
            id: filterField
 | 
			
		||||
            objectName: "memberFilterField"
 | 
			
		||||
            placeholderText: qsTr("Filter members")
 | 
			
		||||
            backgroundColor: theme.chat.roomPane.filterMembers.background
 | 
			
		||||
            bordered: false
 | 
			
		||||
 
 | 
			
		||||
@@ -22,18 +22,11 @@ HRowLayout {
 | 
			
		||||
 | 
			
		||||
    HTextField {
 | 
			
		||||
        id: filterField
 | 
			
		||||
        objectName: "roomFilterField"
 | 
			
		||||
        placeholderText: qsTr("Filter rooms")
 | 
			
		||||
        backgroundColor: theme.mainPane.filterRooms.background
 | 
			
		||||
        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.fillHeight: true
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user