From 0ef309675640dc74c523389f14334f47533294c4 Mon Sep 17 00:00:00 2001 From: Sale Djenic Date: Thu, 30 Mar 2023 14:51:14 +0200 Subject: [PATCH] feat(@desktop/general): copy button identified, will be mostly used as a built in component --- ui/imports/shared/controls/CopyButton.qml | 38 +++++++++++++++++++++++ ui/imports/shared/controls/qmldir | 1 + 2 files changed, 39 insertions(+) create mode 100644 ui/imports/shared/controls/CopyButton.qml diff --git a/ui/imports/shared/controls/CopyButton.qml b/ui/imports/shared/controls/CopyButton.qml new file mode 100644 index 0000000000..b107129640 --- /dev/null +++ b/ui/imports/shared/controls/CopyButton.qml @@ -0,0 +1,38 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +import StatusQ.Core 0.1 +import StatusQ.Core.Theme 0.1 + +import utils 1.0 +import shared.stores 1.0 + +StatusIcon { + id: root + + required property string textToCopy + + icon: "copy" + color: mouseArea.containsMouse? Theme.palette.primaryColor1 : Theme.palette.baseColor1 + + function reset() { + root.icon = "copy" + root.color = Qt.binding(function(){ return mouseArea.containsMouse? Theme.palette.primaryColor1 : Theme.palette.baseColor1 }) + } + + MouseArea { + id: mouseArea + anchors.fill: parent + hoverEnabled: true + cursorShape: containsMouse ? Qt.PointingHandCursor : Qt.ArrowCursor + onClicked: { + RootStore.copyToClipboard(root.textToCopy) + root.icon = "tiny/checkmark" + root.color = Theme.palette.successColor1 + + Backpressure.debounce(root, 1500, function () { + root.reset() + })() + } + } +} diff --git a/ui/imports/shared/controls/qmldir b/ui/imports/shared/controls/qmldir index 9bca47b6f4..9c19074834 100644 --- a/ui/imports/shared/controls/qmldir +++ b/ui/imports/shared/controls/qmldir @@ -37,3 +37,4 @@ StatusSyncCodeInput 1.0 StatusSyncCodeInput.qml GetSyncCodeMobileInstructions 1.0 GetSyncCodeMobileInstructions.qml GetSyncCodeDesktopInstructions 1.0 GetSyncCodeDesktopInstructions.qml ErrorDetails 1.0 ErrorDetails.qml +CopyButton 1.0 CopyButton.qml