73 lines
1.7 KiB
QML
73 lines
1.7 KiB
QML
import QtQuick 2.15
|
|
|
|
import StatusQ.Core 0.1
|
|
import StatusQ.Core.Theme 0.1
|
|
import StatusQ.Controls 0.1
|
|
|
|
StatusInput {
|
|
id: root
|
|
|
|
// TODO: Use https://github.com/status-im/status-desktop/issues/6136
|
|
|
|
enum Mode {
|
|
WriteMode,
|
|
ReadMode
|
|
}
|
|
|
|
required property int mode
|
|
property bool readOnly: false
|
|
|
|
input.edit.readOnly: root.readOnly
|
|
input.font: Theme.monoFont.name
|
|
input.placeholderFont: root.input.font
|
|
|
|
input.rightComponent: {
|
|
switch (root.mode) {
|
|
case StatusSyncCodeInput.Mode.WriteMode:
|
|
return root.valid ? validCodeIconComponent
|
|
: pasteButtonComponent
|
|
case StatusSyncCodeInput.Mode.ReadMode:
|
|
return copyButtonComponent
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: copyButtonComponent
|
|
|
|
StatusButton {
|
|
objectName: "syncCodeCopyButton"
|
|
size: StatusBaseButton.Size.Tiny
|
|
text: qsTr("Copy")
|
|
onClicked: {
|
|
root.input.edit.selectAll();
|
|
root.input.edit.copy();
|
|
root.input.edit.deselect();
|
|
}
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: pasteButtonComponent
|
|
|
|
StatusButton {
|
|
objectName: "syncCodePasteButton"
|
|
size: StatusBaseButton.Size.Tiny
|
|
enabled: !root.readOnly && root.input.edit.canPaste
|
|
text: qsTr("Paste")
|
|
onClicked: {
|
|
root.input.edit.selectAll();
|
|
root.input.edit.paste();
|
|
}
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: validCodeIconComponent
|
|
|
|
StatusIcon {
|
|
icon: "tiny/checkmark"
|
|
color: Theme.palette.successColor1
|
|
}
|
|
}
|
|
}
|