status-desktop/ui/imports/shared/controls/CopyButton.qml

42 lines
1.0 KiB
QML

import QtQuick 2.15
import QtQuick.Controls 2.15
import StatusQ 0.1
import StatusQ.Core 0.1
import StatusQ.Core.Backpressure 0.1
import StatusQ.Core.Theme 0.1
import utils 1.0
StatusIcon {
id: root
required property string textToCopy
readonly property bool hovered: mouseArea.containsMouse
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: {
ClipboardUtils.setText(root.textToCopy)
root.icon = "tiny/checkmark"
root.color = Theme.palette.successColor1
Backpressure.debounce(root, 1500, function () {
root.reset()
})()
}
}
}