status-desktop/ui/app/AppLayouts/Chat/popups/NicknamePopup.qml

131 lines
4.1 KiB
QML
Raw Normal View History

2020-09-16 16:00:21 +00:00
import QtQuick 2.13
import QtQuick.Controls 2.13
import QtQuick.Layouts 1.13
import QtGraphicalEffects 1.13
import utils 1.0
2020-09-16 16:00:21 +00:00
import "../../../../shared"
import "../../../../shared/controls"
import "../../../../shared/popups"
import "../../../../shared/panels"
import "../../../../shared/status"
2020-09-16 16:00:21 +00:00
import "./"
// TODO: replace with StatusModal
2020-09-16 16:00:21 +00:00
ModalPopup {
property int nicknameLength: nicknameInput.textField.text.length
readonly property int maxNicknameLength: 32
property bool nicknameTooLong: nicknameLength > maxNicknameLength
property var changeUsername: function () {}
property var changeNickname: function () {}
2020-09-16 16:00:21 +00:00
id: popup
width: 400
height: 390
noTopMargin: true
onOpened: {
nicknameInput.forceActiveFocus(Qt.MouseFocusReason)
}
2020-09-16 16:00:21 +00:00
header: Item {
height: 78
2020-09-16 16:00:21 +00:00
width: parent.width
StyledText {
id: nicknameTitle
2020-09-22 07:53:03 +00:00
//% "Nickname"
text: qsTrId("nickname")
2020-09-16 16:00:21 +00:00
anchors.top: parent.top
anchors.topMargin: Style.current.padding
2020-09-16 16:00:21 +00:00
anchors.left: parent.left
anchors.leftMargin: Style.current.padding
2020-09-16 16:00:21 +00:00
font.bold: true
font.pixelSize: 17
2020-09-16 16:00:21 +00:00
}
StyledText {
text: isEnsVerified ? alias : fromAuthor
width: 160
elide: !isEnsVerified ? Text.ElideMiddle : Text.ElideNone
anchors.left: nicknameTitle.left
anchors.bottom: parent.bottom
anchors.bottomMargin: Style.current.padding
font.pixelSize: 15
2020-09-16 16:00:21 +00:00
color: Style.current.secondaryText
}
Separator {
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.leftMargin: -Style.current.padding
anchors.right: parent.right
anchors.rightMargin: -Style.current.padding
}
2020-09-16 16:00:21 +00:00
}
StyledText {
id: descriptionText
2020-09-22 07:53:03 +00:00
//% "Nicknames help you identify others in Status. Only you can see the nicknames youve added"
text: qsTrId("nicknames-help-you-identify-others-in-status--only-you-can-see-the-nicknames-you-ve-added")
2020-09-16 16:00:21 +00:00
font.pixelSize: 15
wrapMode: Text.WordWrap
color: Style.current.secondaryText
width: parent.width
}
Input {
id: nicknameInput
2020-09-22 07:53:03 +00:00
//% "Nickname"
placeholderText: qsTrId("nickname")
text: nickname
2020-09-16 16:00:21 +00:00
anchors.top: descriptionText.bottom
anchors.topMargin: Style.current.padding
2020-09-22 07:53:03 +00:00
//% "Your nickname is too long"
validationError: popup.nicknameTooLong ? qsTrId("your-nickname-is-too-long") : ""
Keys.onReleased: {
if (event.key === Qt.Key_Return) {
doneBtn.onClicked();
}
}
2020-09-16 16:00:21 +00:00
}
StyledText {
id: lengthLimitText
text: popup.nicknameLength + "/" + popup.maxNicknameLength
font.pixelSize: 15
anchors.top: nicknameInput.bottom
anchors.topMargin: 12
anchors.right: parent.right
color: popup.nicknameTooLong ? Style.current.danger : Style.current.secondaryText
}
footer: StatusButton {
2020-09-16 16:00:21 +00:00
id: doneBtn
anchors.right: parent.right
anchors.rightMargin: Style.current.smallPadding
2020-09-22 07:53:03 +00:00
//% "Done"
text: qsTrId("done")
2020-09-16 16:00:21 +00:00
anchors.bottom: parent.bottom
enabled: !popup.nicknameTooLong
2020-09-16 16:00:21 +00:00
onClicked: {
if (!isEnsVerified) {
// Change username title only if it was not an ENS name
if (nicknameInput.textField.text === "") {
// If we removed the nickname, go back to showing the alias
popup.changeUsername(alias)
} else {
popup.changeUsername(nicknameInput.textField.text)
}
}
popup.changeNickname(nicknameInput.textField.text)
2020-12-06 22:15:51 +00:00
profileModel.contacts.changeContactNickname(fromAuthor, nicknameInput.textField.text)
popup.close()
if (!!chatsModel.communities.activeCommunity) {
chatsModel.communities.activeCommunity.triggerMembersUpdate()
}
2020-09-16 16:00:21 +00:00
}
}
}