status-desktop/ui/imports/shared/views/profile/ShareProfileDialog.qml

145 lines
4.5 KiB
QML

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Controls 0.1
import StatusQ.Popups.Dialog 0.1
import utils 1.0
import shared.controls 1.0
import shared.popups 1.0
import shared.controls.chat 1.0
StatusDialog {
id: root
required property string publicKey
required property string qrCode
required property string linkToProfile
required property string displayName
required property string largeImage
footer: null
width: 500
topPadding: Style.current.padding
bottomPadding: Style.current.xlPadding
horizontalPadding: 0
StatusScrollView {
anchors.fill: parent
contentWidth: availableWidth
ColumnLayout {
anchors.left: parent.left
anchors.leftMargin: 40
anchors.right: parent.right
anchors.rightMargin: 40
spacing: Style.current.halfPadding
Rectangle {
Layout.fillWidth: true
Layout.preferredHeight: width
color: Theme.palette.white
Image {
anchors.fill: parent
asynchronous: true
fillMode: Image.PreserveAspectFit
mipmap: true
smooth: false
source: root.qrCode
UserImage {
anchors.centerIn: parent
name: root.displayName
pubkey: root.publicKey
image: root.largeImage
interactive: false
imageWidth: 78
imageHeight: 78
// show a hardcoded white ring
showRing: true
colorHash: JSON.stringify([{colorId: 4, segmentLength: 32}])
}
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.RightButton
cursorShape: Qt.PointingHandCursor
onClicked: qrContextMenu.popup()
}
ImageContextMenu {
id: qrContextMenu
imageSource: root.qrCode
}
}
}
StatusBaseText {
Layout.topMargin: Style.current.smallPadding
Layout.fillWidth: true
text: qsTr("Profile link")
}
StatusBaseInput {
Layout.fillWidth: true
Layout.preferredHeight: 44
leftPadding: Style.current.padding
rightPadding: Style.current.halfPadding
topPadding: 0
bottomPadding: 0
placeholder.rightPadding: Style.current.halfPadding
placeholder.elide: Text.ElideMiddle
placeholderText: root.linkToProfile
placeholderTextColor: Theme.palette.directColor1
edit.readOnly: true
background.color: "transparent"
background.border.color: Theme.palette.baseColor2
rightComponent: CopyButton {
textToCopy: root.linkToProfile
StatusToolTip {
text: qsTr("Copy link")
visible: parent.hovered
}
}
}
StatusBaseText {
Layout.topMargin: Style.current.halfPadding
Layout.fillWidth: true
text: qsTr("Emoji hash")
}
StatusBaseInput {
Layout.fillWidth: true
Layout.preferredHeight: 44
leftPadding: Style.current.padding
rightPadding: Style.current.halfPadding
topPadding: 0
bottomPadding: 0
edit.readOnly: true
background.color: "transparent"
background.border.color: Theme.palette.baseColor2
leftComponent: EmojiHash {
publicKey: root.publicKey
oneRow: true
}
rightComponent: CopyButton {
textToCopy: Utils.getEmojiHashAsJson(root.publicKey).join("").toString()
StatusToolTip {
text: qsTr("Copy emoji hash")
visible: parent.hovered
}
}
}
}
}
}