import QtQuick 2.13 import QtQuick.Controls 2.13 import QtQuick.Layouts 1.13 import QtGraphicalEffects 1.13 import utils 1.0 import shared.controls 1.0 import StatusQ.Core 0.1 import StatusQ.Core.Theme 0.1 import StatusQ.Controls 0.1 import StatusQ.Popups 0.1 StatusModal { anchors.centerIn: parent id: popup width: 400 height: 390 header.title: qsTr("Nickname") header.subTitle: isEnsVerified ? alias : fromAuthor header.subTitleElide: !isEnsVerified ? Text.ElideMiddle : Text.ElideNone property int nicknameLength: nicknameInput.textField.text.length readonly property int maxNicknameLength: 32 property bool nicknameTooLong: nicknameLength > maxNicknameLength signal doneClicked(string newUsername, string newNickname) onOpened: { nicknameInput.forceActiveFocus(Qt.MouseFocusReason); } contentItem: Item { width: popup.width height: childrenRect.height Column { anchors.top: parent.top anchors.topMargin: 16 anchors.horizontalCenter: parent.horizontalCenter width: parent.width - 32 spacing: 16 StatusBaseText { id: descriptionText //% "Nicknames help you identify others in Status. Only you can see the nicknames you’ve added" text: qsTrId("nicknames-help-you-identify-others-in-status--only-you-can-see-the-nicknames-you-ve-added") font.pixelSize: 15 wrapMode: Text.WordWrap color: Theme.palette.baseColor1 width: parent.width } Input { id: nicknameInput //% "Nickname" placeholderText: qsTrId("nickname") text: nickname //% "Your nickname is too long" validationError: popup.nicknameTooLong ? qsTrId("your-nickname-is-too-long") : "" Keys.onReleased: { if (event.key === Qt.Key_Return) { doneBtn.onClicked(); } } StatusBaseText { id: lengthLimitText text: popup.nicknameLength + "/" + popup.maxNicknameLength font.pixelSize: 15 anchors.top: parent.bottom anchors.topMargin: 12 anchors.right: parent.right color: popup.nicknameTooLong ? Theme.palette.dangerColro1 : Theme.palette.baseColor1 } } } } rightButtons: [ StatusButton { id: doneBtn //% "Done" text: qsTrId("done") enabled: !popup.nicknameTooLong onClicked: { // If we removed the nickname, go back to showing the alias doneClicked(nicknameInput.textField.text === "" ? alias : nicknameInput.textField.text, nicknameInput.textField.text); } } ] }