import QtQuick 2.14 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.palette.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 } } }