import QtQuick 2.2 import QtQuick.Controls 1.1 import QtQuick.Layouts 1.0 import QtQuick.Controls.Styles 1.1 import QtGraphicalEffects 1.0 Rectangle { id: buttonActionContainer property string text property string buttonShortcut property string sourceImg property string fillColor property alias roundLeft: left.visible property alias roundRight: right.visible signal clicked function startBlinking() { if (!blinkTimer.running) blinkTimer.start() } function stopBlinking() { blinkTimer.stop() } Rectangle { id: left width: 10 height: parent.height anchors.left: parent.left anchors.leftMargin: -8 radius: 15 } Rectangle { id: contentRectangle anchors.fill: parent color: "white" property variant colorGradient: ["#FFFFFF", "#FFFEFC", "#FFFDF9", "#FFFCF7", "#FFFBF4", "#FFFAF2", "#FFF9EF", "#FFF8EC", "#FFF7EA", "#FFF6E7", "#FFF5E5", "#FFF5E2", "#FFF4E0", "#FFF3DD", "#FFF2DA", "#FFF1D8", "#FFF0D5", "#FFEFD3", "#FFEED0", "#FFEDCE", "#FFECCB", "#FFEBC8", "#FFEBC6", "#FFEAC3", "#FFE9C1", "#FFE8BE", "#FFE7BC", "#FFE6B9", "#FFE5B6", "#FFE4B4", "#FFE3B1", "#FFE2AF", "#FFE1AC", "#FFE1AA", "#FFE0A7", "#FFDFA4", "#FFDEA2", "#FFDD9F", "#FFDC9D", "#FFDB9A", "#FFDA97", "#FFD995", "#FFD892", "#FFD790", "#FFD78D", "#FFD68B", "#FFD588", "#FFD485", "#FFD383", "#FFD280", "#FFD17E", "#FFD07B", "#FFCF79", "#FFCE76", "#FFCD73", "#FFCD71", "#FFCC6E", "#FFCB6C", "#FFCA69", "#FFC967", "#FFC864", "#FFC761", "#FFC65F", "#FFC55C", "#FFC45A", "#FFC357", "#FFC355", "#FFC252", "#FFC14F", "#FFC04D", "#FFBF4A", "#FFBE48", "#FFBD45", "#FFBC42", "#FFBB40", "#FFBA3D", "#FFB93B", "#FFB938", "#FFB836", "#FFB733", "#FFB630", "#FFB52E", "#FFB42B", "#FFB329", "#FFB226", "#FFB124", "#FFB021", "#FFAF1E", "#FFAF1C", "#FFAE19", "#FFAD17", "#FFAC14", "#FFAB12", "#FFAA0F", "#FFA90C", "#FFA80A", "#FFA707", "#FFA605", "#FFA502", "#FFA500"] Timer { id: blinkTimer repeat: true interval: 40 running: false property int index: 0 property int direction: 1 onTriggered: { index = index + direction var color = parent.colorGradient[index] left.color = color right.color = color parent.color = parent.colorGradient[index] if (index >= parent.colorGradient.length - 1) direction = -1 else if (index <= 0) direction = 1 } onRunningChanged: { if (!running) { left.color = "white" right.color = "white" parent.color = "white" index = 0 direction = 1 } } } Image { id: debugImage anchors { left: parent.left right: parent.right top: parent.top bottom: parent.bottom bottomMargin: debugImg.pressed ? -2 : 0; topMargin: debugImg.pressed ? 2 : 0; } source: sourceImg fillMode: Image.PreserveAspectFit } Button { anchors.fill: parent id: debugImg action: buttonAction style: ButtonStyle { background: Rectangle { color: "transparent" } } } Action { id: buttonAction shortcut: buttonShortcut onTriggered: { buttonActionContainer.clicked(); } } } Rectangle { id: right width: 10 height: parent.height anchors.left: contentRectangle.right anchors.leftMargin: -8 radius: 15 } Rectangle { anchors.top: contentRectangle.bottom anchors.topMargin: 15 width: parent.width Label { text: buttonActionContainer.text anchors.centerIn: parent } } }