120 lines
4.2 KiB
QML
120 lines
4.2 KiB
QML
import QtQuick
|
|
import Quickshell
|
|
import Quickshell.Hyprland
|
|
import Quickshell.Io
|
|
import "../../../config"
|
|
import "../states/Battery"
|
|
|
|
MouseArea {
|
|
id: batteryButton
|
|
width: expanded ? Math.max(batteryPercentageText.width + Config.spacing_fun(height), 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
|
|
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)
|
|
}
|
|
|
|
} |