Page & popups: standardized keyboard accept/cancel

This commit is contained in:
miruka 2020-06-25 10:27:24 -04:00
parent 476888ca84
commit dcc634be04
14 changed files with 29 additions and 18 deletions

View File

@ -10,7 +10,7 @@
- can leave room with a reason? - can leave room with a reason?
- field/area focus line in popups weird - field/area focus line in popups weird
- use new nio `restore_login()` - use new nio `restore_login()`
- verify all popups and boxes work - verify all popups and boxes work: enter/esc, tab focus, operations
## Refactoring ## Refactoring

View File

@ -7,10 +7,6 @@ HFlickableColumnPage {
implicitWidth: Math.min(parent.width, theme.controls.box.defaultWidth) implicitWidth: Math.min(parent.width, theme.controls.box.defaultWidth)
implicitHeight: Math.min(parent.height, flickable.contentHeight) implicitHeight: Math.min(parent.height, flickable.contentHeight)
// XXX
// Keys.onReturnPressed: if (clickButtonOnEnter) enterClickButton()
// Keys.onEnterPressed: Keys.onReturnPressed(event)
background: Rectangle { background: Rectangle {
color: theme.controls.box.background color: theme.controls.box.background
radius: theme.controls.box.radius radius: theme.controls.box.radius

View File

@ -7,6 +7,10 @@ Page {
padding: currentSpacing < theme.spacing ? 0 : currentSpacing padding: currentSpacing < theme.spacing ? 0 : currentSpacing
background: null background: null
Keys.onReturnPressed: keyboardAccept()
Keys.onEnterPressed: keyboardAccept()
Keys.onEscapePressed: keyboardCancel()
property bool useVariableSpacing: true property bool useVariableSpacing: true
@ -19,6 +23,9 @@ Page {
) : ) :
theme.spacing theme.spacing
signal keyboardAccept()
signal keyboardCancel()
Behavior on padding { HNumberAnimation {} } Behavior on padding { HNumberAnimation {} }
} }

View File

@ -87,7 +87,8 @@ HFlickableColumnPage {
} }
} }
Keys.onEscapePressed: cancel() onKeyboardCancel: cancel()
onKeyboardAccept: applyChanges()
HUserAvatar { HUserAvatar {
@ -221,8 +222,6 @@ HFlickableColumnPage {
// TODO: Qt 5.14+: use a Binding enabled when text not empty // TODO: Qt 5.14+: use a Binding enabled when text not empty
color: utils.nameColor(text) color: utils.nameColor(text)
onAccepted: applyChanges()
} }
} }
@ -262,7 +261,6 @@ HFlickableColumnPage {
HTextField { HTextField {
width: parent.width width: parent.width
error: aliasField.alreadyTakenBy !== "" error: aliasField.alreadyTakenBy !== ""
onAccepted: applyChanges()
defaultText: aliasField.currentAlias defaultText: aliasField.currentAlias
placeholderText: qsTr("e.g. %1").arg(( placeholderText: qsTr("e.g. %1").arg((
nameField.item.text || nameField.item.text ||

View File

@ -92,7 +92,7 @@ HFlickableColumnPage {
} }
} }
Keys.onEscapePressed: page.cancel() onKeyboardCancel: page.cancel()
Timer { Timer {

View File

@ -64,7 +64,7 @@ HFlickableColumnPage {
} }
} }
Keys.onEscapePressed: cancel() onKeyboardCancel: cancel()
HRoomAvatar { HRoomAvatar {

View File

@ -81,7 +81,7 @@ HFlickableColumnPage {
} }
} }
Keys.onEscapePressed: cancel() onKeyboardCancel: cancel()
CurrentUserAvatar { CurrentUserAvatar {

View File

@ -69,7 +69,7 @@ HFlickableColumnPage {
} }
} }
Keys.onEscapePressed: cancel() onKeyboardCancel: cancel()
CurrentUserAvatar { CurrentUserAvatar {

View File

@ -79,7 +79,8 @@ HFlickableColumnPage {
} }
} }
Keys.onEscapePressed: cancel() onKeyboardAccept: save()
onKeyboardCancel: cancel()
HRoomAvatar { HRoomAvatar {

View File

@ -10,6 +10,8 @@ HPopup {
default property alias pageData: page.columnData default property alias pageData: page.columnData
readonly property alias page: page readonly property alias page: page
signal keyboardAccept()
HColumnPage { HColumnPage {
id: page id: page
@ -23,5 +25,8 @@ HPopup {
topPadding + bottomPadding + implicitContentHeight, topPadding + bottomPadding + implicitContentHeight,
) )
useVariableSpacing: false useVariableSpacing: false
Keys.onReturnPressed: popup.keyboardAccept()
Keys.onEnterPressed: popup.keyboardAccept()
} }
} }

View File

@ -10,6 +10,8 @@ HPopup {
default property alias pageData: page.columnData default property alias pageData: page.columnData
readonly property alias page: page readonly property alias page: page
signal keyboardAccept()
HFlickableColumnPage { HFlickableColumnPage {
id: page id: page
@ -21,5 +23,8 @@ HPopup {
popup.maximumPreferredHeight, popup.maximumPreferredHeight,
implicitHeaderHeight + implicitFooterHeight + contentHeight, implicitHeaderHeight + implicitFooterHeight + contentHeight,
) )
Keys.onReturnPressed: popup.keyboardAccept()
Keys.onEnterPressed: popup.keyboardAccept()
} }
} }

View File

@ -74,6 +74,7 @@ HFlickableColumnPopup {
} }
onOpened: passwordField.forceActiveFocus() onOpened: passwordField.forceActiveFocus()
onKeyboardAccept: popup.validate()
SummaryLabel { id: summary } SummaryLabel { id: summary }
@ -90,8 +91,6 @@ HFlickableColumnPopup {
onTextChanged: passwordValid = onTextChanged: passwordValid =
validateWhileTyping ? verifyPassword(text) : null validateWhileTyping ? verifyPassword(text) : null
onAccepted: popup.validate()
Layout.fillWidth: true Layout.fillWidth: true
} }

View File

@ -51,6 +51,7 @@ HFlickableColumnPopup {
} }
onOpened: reasonField.item.forceActiveFocus() onOpened: reasonField.item.forceActiveFocus()
onKeyboardAccept: popup.remove()
SummaryLabel { SummaryLabel {
@ -80,7 +81,6 @@ HFlickableColumnPopup {
HTextField { HTextField {
width: parent.width width: parent.width
onAccepted: popup.remove()
} }
} }
} }

View File

@ -48,6 +48,7 @@ HFlickableColumnPopup {
} }
onOpened: reasonField.item.forceActiveFocus() onOpened: reasonField.item.forceActiveFocus()
onKeyboardAccept: popup.remove()
SummaryLabel { SummaryLabel {
@ -70,7 +71,6 @@ HFlickableColumnPopup {
HTextField { HTextField {
width: parent.width width: parent.width
onAccepted: popup.remove()
} }
} }
} }