92 lines
3.7 KiB
Plaintext
92 lines
3.7 KiB
Plaintext
import { bind } from "astal";
|
|
import { Gtk } from "astal/gtk4";
|
|
import AstalNetwork from "gi://AstalNetwork";
|
|
import networkHelper from "./network-helper";
|
|
|
|
const net = AstalNetwork.get_default();
|
|
const STATE = AstalNetwork.DeviceState;
|
|
|
|
const WiFiList = () => {
|
|
const popover = new Gtk.Popover({ cssClasses: ["WiFiPicker"] });
|
|
|
|
return popover;
|
|
};
|
|
|
|
const renderWiFiList = () => {
|
|
return <box>
|
|
<label label="Test"></label>
|
|
</box>
|
|
}
|
|
|
|
const Network = () => {
|
|
const wifiList = WiFiList();
|
|
|
|
return (
|
|
<box>
|
|
<button
|
|
cssClasses={networkHelper.networkEnabled(en => {
|
|
if (en) return ["network-button", "net-on"];
|
|
else return ["network-button"];
|
|
})}
|
|
onClicked={() =>
|
|
networkHelper.setNetworking(
|
|
!networkHelper.networkEnabled.get(),
|
|
)
|
|
}
|
|
child={<box vertical>
|
|
<label label="Wired" cssClasses={[ 'button-name' ]}></label>
|
|
<label label={bind( net.wired, 'state' ).as( state => {
|
|
if ( state === STATE.ACTIVATED ) {
|
|
return 'Connected. IP: ' + networkHelper.getIP();
|
|
} else if ( state === STATE.DISCONNECTED ) {
|
|
return 'Disconnected';
|
|
} else if ( state === STATE.FAILED ) {
|
|
return 'Error';
|
|
} else if ( state === STATE.PREPARE || state === STATE.CONFIG || state === STATE.IP_CHECK || state === STATE.IP_CONFIG ) {
|
|
return 'Connecting...';
|
|
} else {
|
|
return 'Unavailable';
|
|
}
|
|
} )}></label>
|
|
</box>}
|
|
></button>
|
|
<box>
|
|
<button
|
|
cssClasses={bind(net.wifi, "enabled").as(b => {
|
|
const classes = ["network-button"];
|
|
if (b) {
|
|
classes.push("wifi-on");
|
|
}
|
|
return classes;
|
|
})}
|
|
child={<box vertical>
|
|
<label label="WiFi" cssClasses={[ 'button-name' ]}></label>
|
|
<label label={bind( net.wifi, 'state' ).as( state => {
|
|
if ( state === STATE.ACTIVATED ) {
|
|
return 'Connected. IP: ' + networkHelper.getIP();
|
|
} else if ( state === STATE.DISCONNECTED ) {
|
|
return 'Disconnected';
|
|
} else if ( state === STATE.FAILED ) {
|
|
return 'Error';
|
|
} else if ( state === STATE.PREPARE || state === STATE.CONFIG || state === STATE.IP_CHECK || state === STATE.IP_CONFIG ) {
|
|
return 'Connecting...';
|
|
} else {
|
|
return 'Unavailable';
|
|
}
|
|
} )} visible={bind(net.wifi, 'enabled').as( en => en )}></label>
|
|
<label label="Disabled" visible={bind(net.wifi, 'enabled').as( en => !en )}></label>
|
|
</box>}
|
|
></button>
|
|
<button
|
|
cssClasses={["network-button-context"]}
|
|
visible={bind(net.wifi, "enabled").as(b => b)}
|
|
onClicked={() => wifiList.popup()}
|
|
></button>
|
|
</box>
|
|
{wifiList}
|
|
</box>
|
|
);
|
|
};
|
|
|
|
export default Network;
|