From 2cd177dc135e5cd3dc8c693dae3f841c58b9f5bf Mon Sep 17 00:00:00 2001 From: miruka Date: Tue, 10 Dec 2019 15:32:42 -0400 Subject: [PATCH] Add text remembering ability to HTextField --- TODO.md | 2 +- src/python/config_files.py | 1 - src/qml/Base/HDrawer.qml | 1 + src/qml/Base/HTextField.qml | 47 +++++++++++++++++----------- src/qml/Chat/RoomPane/MemberView.qml | 1 + src/qml/MainPane/MainPaneToolBar.qml | 9 +----- 6 files changed, 32 insertions(+), 29 deletions(-) diff --git a/TODO.md b/TODO.md index b3d87bff..6d47617e 100644 --- a/TODO.md +++ b/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. diff --git a/src/python/config_files.py b/src/python/config_files.py index 38d3016a..a05cebd4 100644 --- a/src/python/config_files.py +++ b/src/python/config_files.py @@ -169,7 +169,6 @@ class UIState(JSONConfigFile): "collapseAccounts": {}, "page": "Pages/Default.qml", "pageProperties": {}, - "sidePaneFilter": "", } diff --git a/src/qml/Base/HDrawer.qml b/src/qml/Base/HDrawer.qml index cb903367..cd28ec05 100644 --- a/src/qml/Base/HDrawer.qml +++ b/src/qml/Base/HDrawer.qml @@ -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 diff --git a/src/qml/Base/HTextField.qml b/src/qml/Base/HTextField.qml index 0abc62e4..22329590 100644 --- a/src/qml/Base/HTextField.qml +++ b/src/qml/Base/HTextField.qml @@ -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 } diff --git a/src/qml/Chat/RoomPane/MemberView.qml b/src/qml/Chat/RoomPane/MemberView.qml index b6b5d9c1..6693c123 100644 --- a/src/qml/Chat/RoomPane/MemberView.qml +++ b/src/qml/Chat/RoomPane/MemberView.qml @@ -47,6 +47,7 @@ HColumnLayout { HTextField { id: filterField + objectName: "memberFilterField" placeholderText: qsTr("Filter members") backgroundColor: theme.chat.roomPane.filterMembers.background bordered: false diff --git a/src/qml/MainPane/MainPaneToolBar.qml b/src/qml/MainPane/MainPaneToolBar.qml index 74c0949d..d05023fe 100644 --- a/src/qml/MainPane/MainPaneToolBar.qml +++ b/src/qml/MainPane/MainPaneToolBar.qml @@ -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