54 lines
1.1 KiB
QML
54 lines
1.1 KiB
QML
// A small circular icon button — mute toggles, chevrons, per-row actions.
|
|
|
|
import QtQuick
|
|
import Quickshell
|
|
import qs.config
|
|
import qs.widgets
|
|
|
|
Rectangle {
|
|
id: root
|
|
|
|
property string icon: ""
|
|
property string iconFallback: "dialog-information-symbolic"
|
|
property int size: 28
|
|
property int iconSize: 16
|
|
property color tint: Theme.fg
|
|
|
|
signal clicked
|
|
|
|
implicitWidth: root.size
|
|
implicitHeight: root.size
|
|
radius: root.size / 2
|
|
border.width: 0
|
|
|
|
color: {
|
|
if (mouse.pressed)
|
|
return Theme.alpha(Theme.fg, Theme.activeAlpha);
|
|
if (mouse.containsMouse)
|
|
return Theme.alpha(Theme.fg, Theme.hoverAlpha);
|
|
return "transparent";
|
|
}
|
|
|
|
Behavior on color {
|
|
ColorAnimation {
|
|
duration: Theme.durFast
|
|
}
|
|
}
|
|
|
|
ThemedIcon {
|
|
anchors.centerIn: parent
|
|
size: root.iconSize
|
|
icon: root.icon
|
|
iconFallback: root.iconFallback
|
|
tint: root.tint
|
|
}
|
|
|
|
MouseArea {
|
|
id: mouse
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
cursorShape: Qt.PointingHandCursor
|
|
onClicked: root.clicked()
|
|
}
|
|
}
|