Files
quickshell/Bar/Network.qml
2026-08-07 18:25:46 +01:00

97 lines
1.6 KiB
QML

pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import Quickshell
import Quickshell.Hyprland
import "../Color.js" as Colors
import "../Components/"
import "../Services/"
Container {
id: root
required property HyprlandMonitor monitor
property bool opened: false
boxColor: Colors.red
boxHeight: 25
boxWidth: 33
defaultItem: icon
exclusiveMonitor: root.monitor
exclusiveToScreen: true
forceHidden: !NetworkManager.isConnectedAndWifi()
states: [
State {
name: "closed"
when: root.hovered == false && root.opened == false
PropertyChanges {
root.boxHeight: 25
root.boxRadius: 9
root.boxWidth: 33
}
},
State {
name: "hovered"
when: root.hovered == true && root.opened == false
PropertyChanges {
root.boxHeight: 28
root.boxWidth: 35
}
},
State {
name: "opened"
when: root.opened == true && root.hovered == true
PropertyChanges {
root.boxHeight: 28
root.boxRadius: 12
root.boxWidth: 350
}
StateChangeScript {
script: {
stack.replace(wifiInfo);
}
}
}
]
hover.onHoveredChanged: {
if (hover.hovered == false) {
root.opened = false;
if (root.state != "icon") {
root.stack.replace(icon);
}
}
}
tap.onTapped: {
root.opened = true;
}
Component {
id: icon
StyledText {
horizontalAlignment: Qt.AlignCenter
propo: true
text: NetworkManager.getNetworkDetails(NetworkManager.defaultAdapter)["icon"]
verticalAlignment: Qt.AlignVCenter
}
}
Component {
id: wifiInfo
StyledText {
horizontalAlignment: Qt.AlignCenter
propo: true
text: NetworkManager.getWifiText()
verticalAlignment: Qt.AlignVCenter
}
}
}