// Copyright (C) 2026 Danilo M. // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as // published by the Free Software Foundation. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. import QtQuick Rectangle { id: btn property alias text: label.text property alias font: label.font property string icon: "" property bool danger: false property bool enabled: true // The mouse event, for a caller that reads modifiers; a handler that // takes no argument ignores it. signal clicked(var mouse) implicitWidth: content.implicitWidth + 22 implicitHeight: content.implicitHeight + 12 radius: 7 opacity: enabled ? 1 : 0.4 color: area.pressed && enabled ? (danger ? Theme.red : Theme.accent) : area.containsMouse && enabled ? Qt.alpha(danger ? Theme.red : Theme.accent, 0.25) : Qt.alpha(Theme.surface, 0.8) border.width: 1 border.color: Qt.alpha(danger ? Theme.red : Theme.text, 0.2) Row { id: content anchors.centerIn: parent spacing: 6 Text { id: iconText visible: btn.icon !== "" text: btn.icon color: label.color font { family: Theme.iconFamily; pixelSize: label.font.pixelSize } } Text { id: label font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 2 } color: (area.pressed && btn.enabled) ? Theme.base : btn.danger ? Theme.red : Theme.text } } MouseArea { id: area anchors.fill: parent hoverEnabled: true cursorShape: btn.enabled ? Qt.PointingHandCursor : Qt.ArrowCursor onClicked: mouse => { if (btn.enabled) btn.clicked(mouse); } } }