C
Event Sender: Sending Messages to Applications
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
// This file is part of the Qt Safe Renderer module
import QtQuick
Rectangle {
id: buttonMainRect
width: 75
height: 50
radius: 5
border.width: 2
property color blinkColor: "#26282a"
property color textBlinkColor: "#d6d6d6"
property alias text: buttonText.text
property alias textColor: buttonText.color
property alias fontPixelSize: buttonText.font.pixelSize
property string icon
property string iconPressed
property bool pressed: false
property bool blink: false
property bool blinkingEnabled: false
property alias mouseEnabled: buttonMouse.enabled
function synchronize() {
blinkTimer.restart()
}
onPressedChanged: {
if (buttonMainRect.pressed) {
if (buttonMainRect.blinkingEnabled) {
blinkTimer.start()
} else {
buttonMainRect.color = buttonMainRect.blinkColor
buttonText.color = buttonMainRect.textBlinkColor
}
}
else {
if (buttonMainRect.blinkingEnabled)
blinkTimer.stop()
buttonMainRect.color = blinkTimer.baseColor
buttonText.color = blinkTimer.textBaseColor
}
}
Text {
id: buttonText
anchors.centerIn: parent
visible: !buttonImage.visible
horizontalAlignment: Text.AlignHCenter
font.pixelSize: 12
color: "#26282a"
wrapMode: Text.Wrap
}
Image {
id: buttonImage
visible: (buttonImage.source != "")
anchors.centerIn: parent
source: (buttonMainRect.pressed ? buttonMainRect.iconPressed : buttonMainRect.icon)
}
MouseArea {
id: buttonMouse
anchors.fill: parent
onClicked: buttonMainRect.pressed = !buttonMainRect.pressed
}
Timer {
id: blinkTimer
repeat: true
onRunningChanged: {
if (!blinkTimer.running && buttonMainRect.blink)
buttonMainRect.blink = false
}
property color baseColor
property color textBaseColor
Component.onCompleted: {
blinkTimer.baseColor = buttonMainRect.color
blinkTimer.textBaseColor = buttonText.color
}
interval: 500
onTriggered: {
buttonMainRect.blink = !buttonMainRect.blink
if (buttonMainRect.blink) {
buttonMainRect.color = buttonMainRect.blinkColor
buttonText.color = buttonMainRect.textBlinkColor
} else {
buttonMainRect.color = blinkTimer.baseColor
buttonText.color = blinkTimer.textBaseColor
}
}
}
}