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

42 lines
1.1 KiB
QML
Raw Normal View History

import QtQuick 2.15
import QtQuick.Controls 2.15
import StatusQ.Core 0.1
import StatusQ.Core.Backpressure 0.1
import StatusQ.Core.Theme 0.1
import utils 1.0
import shared.stores 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: {
RootStore.copyToClipboard(root.textToCopy)
root.icon = "tiny/checkmark"
root.color = Theme.palette.successColor1
Backpressure.debounce(root, 1500, function () {
root.reset()
})()
}
}
}