import QtQuick import Quickshell import Quickshell.Hyprland import Quickshell.Io import "../../../config" import "../states/Battery" MouseArea { id: batteryButton width: expanded ? Math.max(expandedRow.width + Config.spacing_fun(height)*3, bar.height) : Math.max(batteryText.width + Config.spacing_fun(height)*2, bar.height) height: bar.height hoverEnabled: true cursorShape: Qt.PointingHandCursor visible: BatteryState.available property bool expanded: false Rectangle { anchors.fill: parent color: batteryButton.containsMouse ? Colors.tertiary : Qt.alpha(Colors.tertiaryContainer, 0.25) radius: Config.radius_fun(batteryButton.height) border.width: Config.border_width border.color: batteryButton.containsMouse ? Colors.tertiaryContainer_fg : Colors.secondaryContainer_fg Text { id: batteryText visible : !expanded anchors.centerIn: parent text:( BatteryState.percentage >= 95 ? "" : BatteryState.percentage >= 75 ? "" : BatteryState.percentage >= 50 ? "" : BatteryState.percentage >= 25 ? "" : "" ) font.pixelSize: Config.font_size(batteryButton.height) font.family: Config.font color: ( BatteryState.charging ? ( BatteryState.percentage == 100 ? Colors.secondary : Colors.tertiary ) : BatteryState.percentage <= 5 ? Colors.errorContainer : BatteryState.percentage < 10 ? "yellow" : batteryButton.containsMouse ? Colors.tertiary_fg : Colors.primary ) } Text { id: chargeIcon visible : !expanded && BatteryState.charging anchors.centerIn: parent text: "󱐋" font.pixelSize: Config.iconSize(batteryButton.height) font.family: Config.font style: Text.Outline styleColor: Qt.alpha(Colors.tertiaryContainer, 0.5) color: Colors.tertiary } Row { id: expandedRow visible: expanded anchors.centerIn: parent spacing: Config.spacing_fun(batteryButton.height) Text { id: batteryPercentageSymbol text: ( BatteryState.charging ? "󰂄" : BatteryState.percentage >= 90 ? "󰁹": BatteryState.percentage >= 80 ? "󰂂": BatteryState.percentage >= 70 ? "󰂁": BatteryState.percentage >= 60 ? "󰂀": BatteryState.percentage >= 50 ? "󰁿": BatteryState.percentage >= 40 ? "󰁾": BatteryState.percentage >= 30 ? "󰁽": BatteryState.percentage >= 20 ? "󰁼": BatteryState.percentage >= 10 ? "󰁻": BatteryState.percentage >= 5 ? "󰁺": "󰂃" ) font.pixelSize: Config.labelSize(batteryButton.height) font.family: Config.font font.bold: true color: ( BatteryState.percentage <= 5 ? Colors.errorContainer : BatteryState.charging ? ( BatteryState.percentage == 100 ? Colors.secondary : Colors.tertiary ) : BatteryState.percentage < 10 ? "yellow" : batteryButton.containsMouse ? Colors.tertiary_fg : Colors.primary ) } Text { id: batteryPercentageText text: BatteryState.percentage + "%" font.pixelSize: Config.labelSize(batteryButton.height) font.family: Config.font font.bold: true color: batteryPercentageSymbol.color } } } onClicked: { expanded = !expanded console.log("[Battery] Expanded: " + expanded + ", percentage: " + BatteryState.percentage + "%, charging: " + BatteryState.charging) } }