text:qsTr("Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.")
text:qsTr("Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.")
text:qsTr("Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification!")
color:palette.text
color:palette.text
text:qsTr("Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification!")
text:qsTr("Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification!")
color:palette.text
color:palette.text
text:qsTr("Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification!")
verticalAlignment:Text.AlignVCenter
verticalAlignment:Text.AlignVCenter
wrapMode:Text.Wrap
}
Item{
Layout.fillHeight:true
}
}
Item{Layout.fillHeight:true;}
RowLayout{
RowLayout{
id: emojis
id: emojis
propertyvarmapping:[{
propertyvarmapping:[{
"number":0,
"number":0,
"emoji":"🐶",
"emoji":"🐶",
"description":"Dog",
"description":"Dog",
"unicode":"U+1F436"
"unicode":"U+1F436"
},{
},{
"number":1,
"number":1,
"emoji":"🐱",
"emoji":"🐱",
"description":"Cat",
"description":"Cat",
"unicode":"U+1F431"
"unicode":"U+1F431"
},{
},{
"number":2,
"number":2,
"emoji":"🦁",
"emoji":"🦁",
"description":"Lion",
"description":"Lion",
"unicode":"U+1F981"
"unicode":"U+1F981"
},{
},{
"number":3,
"number":3,
"emoji":"🐎",
"emoji":"🐎",
"description":"Horse",
"description":"Horse",
"unicode":"U+1F40E"
"unicode":"U+1F40E"
},{
},{
"number":4,
"number":4,
"emoji":"🦄",
"emoji":"🦄",
"description":"Unicorn",
"description":"Unicorn",
"unicode":"U+1F984"
"unicode":"U+1F984"
},{
},{
"number":5,
"number":5,
"emoji":"🐷",
"emoji":"🐷",
"description":"Pig",
"description":"Pig",
"unicode":"U+1F437"
"unicode":"U+1F437"
},{
},{
"number":6,
"number":6,
"emoji":"🐘",
"emoji":"🐘",
"description":"Elephant",
"description":"Elephant",
"unicode":"U+1F418"
"unicode":"U+1F418"
},{
},{
"number":7,
"number":7,
"emoji":"🐰",
"emoji":"🐰",
"description":"Rabbit",
"description":"Rabbit",
"unicode":"U+1F430"
"unicode":"U+1F430"
},{
},{
"number":8,
"number":8,
"emoji":"🐼",
"emoji":"🐼",
"description":"Panda",
"description":"Panda",
"unicode":"U+1F43C"
"unicode":"U+1F43C"
},{
},{
"number":9,
"number":9,
"emoji":"🐓",
"emoji":"🐓",
"description":"Rooster",
"description":"Rooster",
"unicode":"U+1F413"
"unicode":"U+1F413"
},{
},{
"number":10,
"number":10,
"emoji":"🐧",
"emoji":"🐧",
"description":"Penguin",
"description":"Penguin",
"unicode":"U+1F427"
"unicode":"U+1F427"
},{
},{
"number":11,
"number":11,
"emoji":"🐢",
"emoji":"🐢",
"description":"Turtle",
"description":"Turtle",
"unicode":"U+1F422"
"unicode":"U+1F422"
},{
},{
"number":12,
"number":12,
"emoji":"🐟",
"emoji":"🐟",
"description":"Fish",
"description":"Fish",
"unicode":"U+1F41F"
"unicode":"U+1F41F"
},{
},{
"number":13,
"number":13,
"emoji":"🐙",
"emoji":"🐙",
"description":"Octopus",
"description":"Octopus",
"unicode":"U+1F419"
"unicode":"U+1F419"
},{
},{
"number":14,
"number":14,
"emoji":"🦋",
"emoji":"🦋",
"description":"Butterfly",
"description":"Butterfly",
"unicode":"U+1F98B"
"unicode":"U+1F98B"
},{
},{
"number":15,
"number":15,
"emoji":"🌷",
"emoji":"🌷",
"description":"Flower",
"description":"Flower",
"unicode":"U+1F337"
"unicode":"U+1F337"
},{
},{
"number":16,
"number":16,
"emoji":"🌳",
"emoji":"🌳",
"description":"Tree",
"description":"Tree",
"unicode":"U+1F333"
"unicode":"U+1F333"
},{
},{
"number":17,
"number":17,
"emoji":"🌵",
"emoji":"🌵",
"description":"Cactus",
"description":"Cactus",
"unicode":"U+1F335"
"unicode":"U+1F335"
},{
},{
"number":18,
"number":18,
"emoji":"🍄",
"emoji":"🍄",
"description":"Mushroom",
"description":"Mushroom",
"unicode":"U+1F344"
"unicode":"U+1F344"
},{
},{
"number":19,
"number":19,
"emoji":"🌏",
"emoji":"🌏",
"description":"Globe",
"description":"Globe",
"unicode":"U+1F30F"
"unicode":"U+1F30F"
},{
},{
"number":20,
"number":20,
"emoji":"🌙",
"emoji":"🌙",
"description":"Moon",
"description":"Moon",
"unicode":"U+1F319"
"unicode":"U+1F319"
},{
},{
"number":21,
"number":21,
"emoji":"☁️",
"emoji":"☁️",
"description":"Cloud",
"description":"Cloud",
"unicode":"U+2601U+FE0F"
"unicode":"U+2601U+FE0F"
},{
},{
"number":22,
"number":22,
"emoji":"🔥",
"emoji":"🔥",
"description":"Fire",
"description":"Fire",
"unicode":"U+1F525"
"unicode":"U+1F525"
},{
},{
"number":23,
"number":23,
"emoji":"🍌",
"emoji":"🍌",
"description":"Banana",
"description":"Banana",
"unicode":"U+1F34C"
"unicode":"U+1F34C"
},{
},{
"number":24,
"number":24,
"emoji":"🍎",
"emoji":"🍎",
"description":"Apple",
"description":"Apple",
"unicode":"U+1F34E"
"unicode":"U+1F34E"
},{
},{
"number":25,
"number":25,
"emoji":"🍓",
"emoji":"🍓",
"description":"Strawberry",
"description":"Strawberry",
"unicode":"U+1F353"
"unicode":"U+1F353"
},{
},{
"number":26,
"number":26,
"emoji":"🌽",
"emoji":"🌽",
"description":"Corn",
"description":"Corn",
"unicode":"U+1F33D"
"unicode":"U+1F33D"
},{
},{
"number":27,
"number":27,
"emoji":"🍕",
"emoji":"🍕",
"description":"Pizza",
"description":"Pizza",
"unicode":"U+1F355"
"unicode":"U+1F355"
},{
},{
"number":28,
"number":28,
"emoji":"🎂",
"emoji":"🎂",
"description":"Cake",
"description":"Cake",
"unicode":"U+1F382"
"unicode":"U+1F382"
},{
},{
"number":29,
"number":29,
"emoji":"❤️",
"emoji":"❤️",
"description":"Heart",
"description":"Heart",
"unicode":"U+2764U+FE0F"
"unicode":"U+2764U+FE0F"
},{
},{
"number":30,
"number":30,
"emoji":"😀",
"emoji":"😀",
"description":"Smiley",
"description":"Smiley",
"unicode":"U+1F600"
"unicode":"U+1F600"
},{
},{
"number":31,
"number":31,
"emoji":"🤖",
"emoji":"🤖",
"description":"Robot",
"description":"Robot",
"unicode":"U+1F916"
"unicode":"U+1F916"
},{
},{
"number":32,
"number":32,
"emoji":"🎩",
"emoji":"🎩",
"description":"Hat",
"description":"Hat",
"unicode":"U+1F3A9"
"unicode":"U+1F3A9"
},{
},{
"number":33,
"number":33,
"emoji":"👓",
"emoji":"👓",
"description":"Glasses",
"description":"Glasses",
"unicode":"U+1F453"
"unicode":"U+1F453"
},{
},{
"number":34,
"number":34,
"emoji":"🔧",
"emoji":"🔧",
"description":"Spanner",
"description":"Spanner",
"unicode":"U+1F527"
"unicode":"U+1F527"
},{
},{
"number":35,
"number":35,
"emoji":"🎅",
"emoji":"🎅",
"description":"Santa",
"description":"Santa",
"unicode":"U+1F385"
"unicode":"U+1F385"
},{
},{
"number":36,
"number":36,
"emoji":"👍",
"emoji":"👍",
"description":"Thumbs Up",
"description":"Thumbs Up",
"unicode":"U+1F44D"
"unicode":"U+1F44D"
},{
},{
"number":37,
"number":37,
"emoji":"☂️",
"emoji":"☂️",
"description":"Umbrella",
"description":"Umbrella",
"unicode":"U+2602U+FE0F"
"unicode":"U+2602U+FE0F"
},{
},{
"number":38,
"number":38,
"emoji":"⌛",
"emoji":"⌛",
"description":"Hourglass",
"description":"Hourglass",
"unicode":"U+231B"
"unicode":"U+231B"
},{
},{
"number":39,
"number":39,
"emoji":"⏰",
"emoji":"⏰",
"description":"Clock",
"description":"Clock",
"unicode":"U+23F0"
"unicode":"U+23F0"
},{
},{
"number":40,
"number":40,
"emoji":"🎁",
"emoji":"🎁",
"description":"Gift",
"description":"Gift",
"unicode":"U+1F381"
"unicode":"U+1F381"
},{
},{
"number":41,
"number":41,
"emoji":"💡",
"emoji":"💡",
"description":"Light Bulb",
"description":"Light Bulb",
"unicode":"U+1F4A1"
"unicode":"U+1F4A1"
},{
},{
"number":42,
"number":42,
"emoji":"📕",
"emoji":"📕",
"description":"Book",
"description":"Book",
"unicode":"U+1F4D5"
"unicode":"U+1F4D5"
},{
},{
"number":43,
"number":43,
"emoji":"✏️",
"emoji":"✏️",
"description":"Pencil",
"description":"Pencil",
"unicode":"U+270FU+FE0F"
"unicode":"U+270FU+FE0F"
},{
},{
"number":44,
"number":44,
"emoji":"📎",
"emoji":"📎",
"description":"Paperclip",
"description":"Paperclip",
"unicode":"U+1F4CE"
"unicode":"U+1F4CE"
},{
},{
"number":45,
"number":45,
"emoji":"✂️",
"emoji":"✂️",
"description":"Scissors",
"description":"Scissors",
"unicode":"U+2702U+FE0F"
"unicode":"U+2702U+FE0F"
},{
},{
"number":46,
"number":46,
"emoji":"🔒",
"emoji":"🔒",
"description":"Lock",
"description":"Lock",
"unicode":"U+1F512"
"unicode":"U+1F512"
},{
},{
"number":47,
"number":47,
"emoji":"🔑",
"emoji":"🔑",
"description":"Key",
"description":"Key",
"unicode":"U+1F511"
"unicode":"U+1F511"
},{
},{
"number":48,
"number":48,
"emoji":"🔨",
"emoji":"🔨",
"description":"Hammer",
"description":"Hammer",
"unicode":"U+1F528"
"unicode":"U+1F528"
},{
},{
"number":49,
"number":49,
"emoji":"☎️",
"emoji":"☎️",
"description":"Telephone",
"description":"Telephone",
"unicode":"U+260EU+FE0F"
"unicode":"U+260EU+FE0F"
},{
},{
"number":50,
"number":50,
"emoji":"🏁",
"emoji":"🏁",
"description":"Flag",
"description":"Flag",
"unicode":"U+1F3C1"
"unicode":"U+1F3C1"
},{
},{
"number":51,
"number":51,
"emoji":"🚂",
"emoji":"🚂",
"description":"Train",
"description":"Train",
"unicode":"U+1F682"
"unicode":"U+1F682"
},{
},{
"number":52,
"number":52,
"emoji":"🚲",
"emoji":"🚲",
"description":"Bicycle",
"description":"Bicycle",
"unicode":"U+1F6B2"
"unicode":"U+1F6B2"
},{
},{
"number":53,
"number":53,
"emoji":"✈️",
"emoji":"✈️",
"description":"Aeroplane",
"description":"Aeroplane",
"unicode":"U+2708U+FE0F"
"unicode":"U+2708U+FE0F"
},{
},{
"number":54,
"number":54,
"emoji":"🚀",
"emoji":"🚀",
"description":"Rocket",
"description":"Rocket",
"unicode":"U+1F680"
"unicode":"U+1F680"
},{
},{
"number":55,
"number":55,
"emoji":"🏆",
"emoji":"🏆",
"description":"Trophy",
"description":"Trophy",
"unicode":"U+1F3C6"
"unicode":"U+1F3C6"
},{
},{
"number":56,
"number":56,
"emoji":"⚽",
"emoji":"⚽",
"description":"Ball",
"description":"Ball",
"unicode":"U+26BD"
"unicode":"U+26BD"
},{
},{
"number":57,
"number":57,
"emoji":"🎸",
"emoji":"🎸",
"description":"Guitar",
"description":"Guitar",
"unicode":"U+1F3B8"
"unicode":"U+1F3B8"
},{
},{
"number":58,
"number":58,
"emoji":"🎺",
"emoji":"🎺",
"description":"Trumpet",
"description":"Trumpet",
"unicode":"U+1F3BA"
"unicode":"U+1F3BA"
},{
},{
"number":59,
"number":59,
"emoji":"🔔",
"emoji":"🔔",
"description":"Bell",
"description":"Bell",
"unicode":"U+1F514"
"unicode":"U+1F514"
},{
},{
"number":60,
"number":60,
"emoji":"⚓",
"emoji":"⚓",
"description":"Anchor",
"description":"Anchor",
"unicode":"U+2693"
"unicode":"U+2693"
},{
},{
"number":61,
"number":61,
"emoji":"🎧",
"emoji":"🎧",
"description":"Headphones",
"description":"Headphones",
"unicode":"U+1F3A7"
"unicode":"U+1F3A7"
},{
},{
"number":62,
"number":62,
"emoji":"📁",
"emoji":"📁",
"description":"Folder",
"description":"Folder",
"unicode":"U+1F4C1"
"unicode":"U+1F4C1"
},{
},{
"number":63,
"number":63,
"emoji":"📌",
"emoji":"📌",
"description":"Pin",
"description":"Pin",
"unicode":"U+1F4CC"
"unicode":"U+1F4CC"
}]
}]
Layout.alignment:Qt.AlignHCenter
Layout.alignment:Qt.AlignHCenter
@ -370,58 +371,52 @@ ColumnLayout {
Label{
Label{
//height:font.pixelSize*2
//height:font.pixelSize*2
Layout.alignment:Qt.AlignHCenter
Layout.alignment:Qt.AlignHCenter
text:col.emoji.emoji
font.pixelSize:Qt.application.font.pixelSize*2
font.family:Settings.emojiFont
color:palette.text
color:palette.text
font.family:Settings.emojiFont
font.pixelSize:Qt.application.font.pixelSize*2
text:col.emoji.emoji
}
}
Label{
Label{
Layout.alignment:Qt.AlignHCenter|Qt.AlignBottom
Layout.alignment:Qt.AlignHCenter|Qt.AlignBottom
text:col.emoji.description
color:palette.text
color:palette.text
text:col.emoji.description
}
}
}
}
}
}
}
}
}
}
Item{Layout.fillHeight:true;}
Item{
Layout.fillHeight:true
}
Label{
Label{
Layout.preferredWidth:400
Layout.fillWidth:true
Layout.fillWidth:true
wrapMode:Text.Wrap
Layout.preferredWidth:400
text:qsTr("The displayed emoji might look different in different clients if a different font is used. Similarly they might be translated into different languages. Nonetheless they should depict one of 64 different objects or animals. For example a lion and a cat are different, but a cat is the same even if one client just shows a cat face, while another client shows a full cat body.")
color:palette.text
color:palette.text
text:qsTr("The displayed emoji might look different in different clients if a different font is used. Similarly they might be translated into different languages. Nonetheless they should depict one of 64 different objects or animals. For example a lion and a cat are different, but a cat is the same even if one client just shows a cat face, while another client shows a full cat body.")
text:qsTr("List of aliases to this room. Usually you can only add aliases on your server. You can have one canonical alias and many alternate aliases.")
text:qsTr("List of aliases to this room. Usually you can only add aliases on your server. You can have one canonical alias and many alternate aliases.")
text:summary.isKnockOnly?qsTr("This room can't be joined directly. You can, however, knock on the room and room members can accept or decline this join request. You can additionally provide a reason for them to let you in below:"):qsTr("Do you want to join this room? You can optionally add a reason below:")
color:palette.text
Layout.fillWidth:true
Layout.fillWidth:true
color:palette.text
font.bold:true
horizontalAlignment:Text.AlignHCenter
horizontalAlignment:Text.AlignHCenter
text:summary.isKnockOnly?qsTr("This room can't be joined directly. You can, however, knock on the room and room members can accept or decline this join request. You can additionally provide a reason for them to let you in below:"):qsTr("Do you want to join this room? You can optionally add a reason below:")
returnqsTr("You can configure when your messages will be deleted in %1. This only happens when Nheko is open and has permissions to delete messages until Matrix servers support this feature natively. In general 0 means disable.").arg(roomName);
returnqsTr("You can configure when your messages will be deleted in %1. This only happens when Nheko is open and has permissions to delete messages until Matrix servers support this feature natively. In general 0 means disable.").arg(roomName);
}
}else{
else{
returnqsTr("You can configure when your messages will be deleted in all rooms unless configured otherwise. This only happens when Nheko is open and has permissions to delete messages until Matrix servers support this feature natively. In general 0 means disable.");
returnqsTr("You can configure when your messages will be deleted in all rooms unless configured otherwise. This only happens when Nheko is open and has permissions to delete messages until Matrix servers support this feature natively. In general 0 means disable.");
ToolTip.text:qsTr("If this is turned on, old state events also get redacted. The latest state event of any type+key combination is excluded from redaction to not remove the room name and similar state by accident.")
ToolTip.text:qsTr("If this is turned on, old state events also get redacted. The latest state event of any type+key combination is excluded from redaction to not remove the room name and similar state by accident.")
text:qsTr("Be careful when editing permissions. You can't lower the permissions of people with a same or higher level than you. Be careful when promoting others.")
text:qsTr("Be careful when editing permissions. You can't lower the permissions of people with a same or higher level than you. Be careful when promoting others.")
}
}
TabBar{
TabBar{
id: bar
id: bar
Layout.preferredWidth:parent.width
Layout.preferredWidth:parent.width
NhekoTabButton{
NhekoTabButton{
@ -57,95 +73,95 @@ ApplicationWindow {
}
}
}
}
Rectangle{
Rectangle{
Layout.fillWidth:true
Layout.fillHeight:true
Layout.fillHeight:true
color:palette.alternateBase
Layout.fillWidth:true
border.width:1
border.color:Nheko.theme.separator
border.color:Nheko.theme.separator
border.width:1
color:palette.alternateBase
StackLayout{
StackLayout{
anchors.fill:parent
anchors.fill:parent
anchors.margins:Nheko.paddingMedium
anchors.margins:Nheko.paddingMedium
currentIndex:bar.currentIndex
currentIndex:bar.currentIndex
ColumnLayout{
ColumnLayout{
spacing:Nheko.paddingMedium
spacing:Nheko.paddingMedium
MatrixText{
MatrixText{
text:qsTr("Move permissions between roles to change them")
text:qsTr("This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.")
text:qsTr("This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.")
ToolTip.text:qsTr("How much of the history is visible to joined members. Changing this won't affect the visibility of already sent messages. It only applies to new messages.")
ToolTip.text:qsTr("How much of the history is visible to joined members. Changing this won't affect the visibility of already sent messages. It only applies to new messages.")
ToolTip.text:qsTr("Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :.\nYou can also put your homeserver address there if your server doesn't support .well-known lookup.\nExample: @user:yourserver.example.com\nIf Nheko fails to discover your homeserver, it will show you a field to enter the server manually.")
ToolTip.text:qsTr("Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :.\nYou can also put your homeserver address there if your server doesn't support .well-known lookup.\nExample: @user:yourserver.example.com\nIf Nheko fails to discover your homeserver, it will show you a field to enter the server manually.")
onEditingFinished:login.mxid=text
Keys.forwardTo:[pwBtn,ssoRepeater]
}
}
Spinner{
Spinner{
Layout.preferredHeight:matrixIdLabel.height/2
Layout.alignment:Qt.AlignBottom
Layout.alignment:Qt.AlignBottom
Layout.preferredHeight:matrixIdLabel.height/2
visible:running
running:login.lookingUpHs
foreground:palette.mid
foreground:palette.mid
running:login.lookingUpHs
visible:running
}
}
}
}
MatrixText{
MatrixText{
Layout.fillWidth:true
Layout.fillWidth:true
textFormat:Text.PlainText
color:Nheko.theme.error
color:Nheko.theme.error
text:login.mxidError
text:login.mxidError
textFormat:Text.PlainText
visible:text
visible:text
wrapMode:TextEdit.Wrap
wrapMode:TextEdit.Wrap
}
}
MatrixTextField{
MatrixTextField{
id: passwordLabel
id: passwordLabel
Keys.forwardTo:[pwBtn,ssoRepeater]
Layout.fillWidth:true
Layout.fillWidth:true
label:qsTr("Password")
echoMode:TextInput.Password
ToolTip.text:qsTr("Your password.")
ToolTip.text:qsTr("Your password.")
echoMode:TextInput.Password
label:qsTr("Password")
visible:login.passwordSupported
visible:login.passwordSupported
Keys.forwardTo:[pwBtn,ssoRepeater]
}
}
MatrixTextField{
MatrixTextField{
id: deviceNameLabel
id: deviceNameLabel
Keys.forwardTo:[pwBtn,ssoRepeater]
Layout.fillWidth:true
Layout.fillWidth:true
ToolTip.text:qsTr("A name for this device which will be shown to others when verifying your devices. If nothing is provided, a default is used.")
label:qsTr("Device name")
label:qsTr("Device name")
placeholderText:login.initialDeviceName()
placeholderText:login.initialDeviceName()
ToolTip.text:qsTr("A name for this device which will be shown to others when verifying your devices. If nothing is provided, a default is used.")
Keys.forwardTo:[pwBtn,ssoRepeater]
}
}
MatrixTextField{
MatrixTextField{
id: hsLabel
id: hsLabel
enabled:visible
visible:login.homeserverNeeded
Keys.forwardTo:[pwBtn,ssoRepeater]
Layout.fillWidth:true
Layout.fillWidth:true
ToolTip.text:qsTr("The address that can be used to contact your homeserver's client API.\nExample: https://yourserver.example.com:8787")
ToolTip.text:qsTr("A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.")
label:qsTr("Homeserver")
label:qsTr("Homeserver")
placeholderText:qsTr("your.server")
placeholderText:qsTr("your.server")
onEditingFinished:regis.setServer(text)
ToolTip.text:qsTr("A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.")
onEditingFinished:regis.setServer(text)
}
}
Spinner{
Spinner{
Layout.preferredHeight:hsLabel.height/2
Layout.alignment:Qt.AlignBottom
Layout.alignment:Qt.AlignBottom
Layout.preferredHeight:hsLabel.height/2
visible:running
running:regis.lookingUpHs
foreground:palette.mid
foreground:palette.mid
running:regis.lookingUpHs
visible:running
}
}
}
}
MatrixText{
MatrixText{
Layout.fillWidth:true
Layout.fillWidth:true
textFormat:Text.PlainText
color:Nheko.theme.error
color:Nheko.theme.error
text:regis.hsError
text:regis.hsError
textFormat:Text.PlainText
visible:text
visible:text
wrapMode:TextEdit.Wrap
wrapMode:TextEdit.Wrap
}
}
RowLayout{
RowLayout{
Layout.fillWidth:true
spacing:Nheko.paddingLarge
spacing:Nheko.paddingLarge
visible:regis.supported
visible:regis.supported
Layout.fillWidth:true
MatrixTextField{
MatrixTextField{
id: usernameLabel
id: usernameLabel
Layout.fillWidth:true
Layout.fillWidth:true
label:qsTr("Username")
ToolTip.text:qsTr("The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.")
ToolTip.text:qsTr("The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.")