73 lines
1.8 KiB
QML
73 lines
1.8 KiB
QML
// One segment of the Screen / Window / Selection control.
|
|
//
|
|
// Icons are Nerd Font glyphs rather than freedesktop icons on purpose: the
|
|
// Adwaita "symbolic" SVGs are flat black and Qt, unlike GTK, will not recolour
|
|
// them, so they'd be invisible on this dark overlay.
|
|
|
|
import QtQuick
|
|
import qs.config
|
|
|
|
Rectangle {
|
|
id: root
|
|
|
|
property string glyph: ""
|
|
property string label: ""
|
|
property bool active: false
|
|
|
|
signal clicked
|
|
|
|
implicitWidth: content.implicitWidth + 30
|
|
implicitHeight: 40
|
|
radius: Theme.pillRadius
|
|
border.width: 0
|
|
|
|
color: {
|
|
if (root.active)
|
|
return mouse.containsMouse ? Qt.lighter(Theme.accent, 1.1) : Theme.accent;
|
|
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
|
|
}
|
|
}
|
|
|
|
readonly property color contentColor: root.active ? Theme.bgDark : Theme.fg
|
|
|
|
Row {
|
|
id: content
|
|
anchors.centerIn: parent
|
|
spacing: 8
|
|
|
|
Text {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: root.glyph
|
|
color: root.contentColor
|
|
font.family: Theme.fontMono
|
|
font.pixelSize: Theme.fontSizeLarge
|
|
}
|
|
|
|
Text {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: root.label
|
|
color: root.contentColor
|
|
font.family: Theme.fontFamily
|
|
font.pixelSize: Theme.fontSize
|
|
font.weight: Font.Medium
|
|
}
|
|
}
|
|
|
|
MouseArea {
|
|
id: mouse
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
cursorShape: Qt.PointingHandCursor
|
|
onClicked: root.clicked()
|
|
}
|
|
}
|