2022-08-19 15:59:36 +02:00
|
|
|
// Copyright (C) 2019 The Qt Company Ltd.
|
|
|
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0 WITH Qt-GPL-exception-1.0
|
2019-11-08 15:05:36 +02:00
|
|
|
|
|
|
|
|
import QtQuick 2.12
|
|
|
|
|
import QtQuick 2.0
|
|
|
|
|
import QtQuick.Controls 2.0
|
|
|
|
|
|
|
|
|
|
Rectangle {
|
|
|
|
|
property bool selected: false
|
|
|
|
|
property string tooltip
|
|
|
|
|
property string shortcut
|
|
|
|
|
property string currentShortcut
|
|
|
|
|
property string tool
|
2020-01-16 17:42:04 +02:00
|
|
|
property string buttonGroup
|
2019-11-21 11:13:19 +02:00
|
|
|
property bool togglable: true
|
2020-02-10 15:32:57 +02:00
|
|
|
property string sceneId
|
2019-11-08 15:05:36 +02:00
|
|
|
|
2020-01-16 17:42:04 +02:00
|
|
|
property int _buttonGroupIndex: -1
|
|
|
|
|
property var _buttonGroupArray: []
|
|
|
|
|
|
2019-11-08 15:05:36 +02:00
|
|
|
id: root
|
2020-03-12 17:22:51 +02:00
|
|
|
width: 16
|
|
|
|
|
height: 16
|
2019-11-08 15:05:36 +02:00
|
|
|
color: root.selected ? "#aa000000" : (mouseArea.containsMouse ? "#44000000" : "#00000000")
|
|
|
|
|
radius: 3
|
|
|
|
|
|
2020-01-16 17:42:04 +02:00
|
|
|
Component.onCompleted: {
|
|
|
|
|
var group = parent.buttonGroups[buttonGroup];
|
|
|
|
|
if (group) {
|
|
|
|
|
_buttonGroupArray = group;
|
|
|
|
|
for (var i = 0; i < _buttonGroupArray.length; ++i) {
|
|
|
|
|
if (_buttonGroupArray[i] === this) {
|
|
|
|
|
_buttonGroupIndex = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2019-11-08 15:05:36 +02:00
|
|
|
ToolTip {
|
|
|
|
|
text: root.tooltip + " (" + root.shortcut + ")"
|
|
|
|
|
visible: mouseArea.containsMouse
|
|
|
|
|
delay: 1000
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Shortcut {
|
|
|
|
|
sequence: root.currentShortcut
|
|
|
|
|
onActivated: mouseArea.onClicked(null)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MouseArea {
|
|
|
|
|
id: mouseArea
|
|
|
|
|
cursorShape: "PointingHandCursor"
|
|
|
|
|
anchors.fill: parent
|
|
|
|
|
hoverEnabled: true
|
|
|
|
|
|
|
|
|
|
onClicked: {
|
|
|
|
|
if (!root.selected) {
|
2020-01-16 17:42:04 +02:00
|
|
|
for (var i = 0; i < root._buttonGroupArray.length; ++i)
|
|
|
|
|
root._buttonGroupArray[i].selected = false;
|
2019-11-08 15:05:36 +02:00
|
|
|
|
|
|
|
|
root.selected = true;
|
2020-01-16 17:42:04 +02:00
|
|
|
if (_buttonGroupIndex >= 0)
|
2020-02-10 15:32:57 +02:00
|
|
|
_generalHelper.storeToolState(sceneId, root.buttonGroup, root._buttonGroupIndex)
|
2019-11-21 11:13:19 +02:00
|
|
|
|
|
|
|
|
if (!root.togglable) {
|
|
|
|
|
// Deselect button after a short while (selection acts as simple click indicator)
|
|
|
|
|
_generalHelper.delayedPropertySet(root, 200, "selected", false);
|
|
|
|
|
}
|
2019-11-08 15:05:36 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|