mirror of
https://github.com/end-4/dots-hyprland.git
synced 2026-06-07 15:59:26 -05:00
63 lines
2.1 KiB
QML
63 lines
2.1 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
import Quickshell.Hyprland
|
|
import qs.services
|
|
import qs.modules.common
|
|
import qs.modules.common.widgets
|
|
|
|
GroupButton {
|
|
id: root
|
|
horizontalPadding: 12
|
|
verticalPadding: 8
|
|
bounce: false
|
|
property string buttonIcon
|
|
property bool leftmost: false
|
|
property bool rightmost: false
|
|
leftRadius: (toggled || leftmost) ? (height / 2) : Appearance.rounding.unsharpenmore
|
|
rightRadius: (toggled || rightmost) ? (height / 2) : Appearance.rounding.unsharpenmore
|
|
colBackground: Appearance.colors.colSecondaryContainer
|
|
colBackgroundHover: Appearance.colors.colSecondaryContainerHover
|
|
colBackgroundActive: Appearance.colors.colSecondaryContainerActive
|
|
|
|
contentItem: RowLayout {
|
|
spacing: 4 * (root.buttonText?.length > 0)
|
|
|
|
Loader {
|
|
Layout.alignment: Qt.AlignVCenter
|
|
active: root.buttonIcon && root.buttonIcon.length > 0
|
|
visible: active
|
|
sourceComponent: Item {
|
|
implicitWidth: materialSymbol.implicitWidth
|
|
MaterialSymbol {
|
|
id: materialSymbol
|
|
anchors.centerIn: parent
|
|
text: root.buttonIcon
|
|
iconSize: Appearance.font.pixelSize.larger
|
|
color: root.toggled ? Appearance.colors.colOnPrimary : Appearance.colors.colOnSecondaryContainer
|
|
}
|
|
}
|
|
}
|
|
|
|
Item {
|
|
implicitWidth: root.buttonText?.length > 0 ? textItem.implicitWidth : 0
|
|
implicitHeight: textMetrics.height // Force height to that of regular text
|
|
|
|
TextMetrics {
|
|
id: textMetrics
|
|
font.family: Appearance.font.family.main
|
|
text: "Abc"
|
|
}
|
|
|
|
StyledText {
|
|
id: textItem
|
|
anchors.centerIn: parent
|
|
color: root.toggled ? Appearance.colors.colOnPrimary : Appearance.colors.colOnSecondaryContainer
|
|
text: root.buttonText
|
|
}
|
|
}
|
|
}
|
|
}
|